题解 | #修复串列了的记录#
修复串列了的记录
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是用来提取字符串的一部分,可以指定开始位置和长度。
这两个函数在处理字符串时非常有用,尤其是在需要从数据库中提取或分析特定格式的数据时。
