题解 | #修复串列了的记录#
修复串列了的记录
https://www.nowcoder.com/practice/a5475ed3b5ab4de58e2ea426b4b2db76
知识点
- SUBSTRING_INDEX(str, delimiter, count) 提取字符串
str
: 要进行操作的字符串。delimiter
: 分隔符,用于将字符串分割成子字符串。- 如果
count
是正数,函数将返回前count - 1
个分隔符之间的子字符串,以及最后一个分隔符之前的部分。 - 如果
count
是负数,函数将返回从右侧开始的第count
个分隔符之后的子字符串,以及它后面的部分。
示例:
SUBSTRING_INDEX('www.example.com', '.', 2) 将返回字符串 'www.example',因为它获取了第 2 个点号之前的部分。 SUBSTRING_INDEX('www.example.com', '.', -2) 将返回字符串 'example.com',因为它获取了倒数第 2 个点号之后的部分。
- CAST(expression AS data_type) 进行类型转换
expression
: 要转换的表达式或列值。data_type
: 要将表达式转换成的目标数据类型。
示例:
SELECT CAST('42' AS INT); -- 将字符串 '42' 转换为整数,结果为 42 SELECT CAST('3.14' AS DECIMAL(4, 2)); -- 将字符串 '3.14' 转换为带有两位小数的十进制数,结果为 3.14 SELECT CAST('2023-08-17' AS DATE); -- 将字符串 '2023-08-17' 转换为日期类型 SELECT CAST(15.75 AS CHAR); -- 将浮点数 15.75 转换为字符串类型,结果为 '15.75'
题解
- 原来的tag是 算法,medium,80
- 结构为 %,%
- 第一个 , 之前的分割为 tag
- `difficulty` 夹在中间, 先从前往后取出 算法,medium,再从后往前取出 `medium`
- 从后往前 取出deration,再转换为数值类型
SELECT exam_id, substring_index (tag, ',', 1) AS tag, # 算法 substring_index (substring_index (tag, ',', 2), ',', -1) AS difficulty, # medium CAST(substring_index (tag, ',', -1) AS DECIMAL) AS duration # 80 FROM examination_info WHERE tag LIKE '%,%';