题解 | #修复串列了的记录#
修复串列了的记录
https://www.nowcoder.com/practice/a5475ed3b5ab4de58e2ea426b4b2db76
SELECT exam_id, SUBSTRING_INDEX(tag, ',', 1) AS tag, SUBSTRING_INDEX(SUBSTRING_INDEX(tag, ',', 2), ',', -1) AS difficulty, SUBSTRING_INDEX(tag, ',', -1) AS duration FROM( SELECT exam_id, tag, difficulty, duration FROM examination_info WHERE duration = 0 ) a
当然,我很乐意为您介绍SUBSTRING_INDEX
和SUBSTRING
这两个MySQL中处理字符串的函数。
SUBSTRING_INDEX
SUBSTRING_INDEX
是MySQL中的一个字符串函数,用于返回字符串中的子字符串,这个子字符串是由指定的分隔符分隔的。该函数的语法如下:
SUBSTRING_INDEX(str, delim, count)
str
:需要处理的字符串。delim
:用作分隔符的字符串。count
:指定要返回的子字符串的数量。如果count
为正数,返回从字符串的开始到指定分隔符的第count
次出现之间的子字符串;如果count
为负数,则从字符串的末尾向开始计算,并返回最后的count
个子字符串。
示例
假设您有一个字符串'a,b,c,d,e'
,并且想要根据逗号(,
)分隔符获取前两个元素:
SELECT SUBSTRING_INDEX('a,b,c,d,e', ',', 2);
这将返回'a,b'
。
如果想获取最后两个元素,可以使用:
SELECT SUBSTRING_INDEX('a,b,c,d,e', ',', -2);
这将返回'd,e'
。
SUBSTRING
SUBSTRING
(或其同义词SUBSTR
)是一个用于提取字符串中的一部分的函数。该函数的语法如下:
SUBSTRING(str, pos, len)
str
:需要处理的字符串。pos
:开始提取的位置(1表示字符串的开始位置)。len
(可选):要提取的字符数。如果省略,SUBSTRING
函数将提取从pos
位置到字符串结尾的所有字符。
示例
假设您有一个字符串'Hello, World!'
,并且想要提取从第二个字符开始的5个字符:
SELECT SUBSTRING('Hello, World!', 2, 5);
这将返回'ello,'
。
如果您省略len
参数:
SELECT SUBSTRING('Hello, World!', 2);
这将返回从第二个字符开始到字符串结尾的所有字符:'ello, World!'
。
小结
SUBSTRING_INDEX
是用来根据分隔符分隔字符串,并返回指定数量的子字符串。SUBSTRING
是用来提取字符串的一部分,可以指定开始位置和长度。
这两个函数在处理字符串时非常有用,尤其是在需要从数据库中提取或分析特定格式的数据时。