题解 | #修复串列了的记录#
修复串列了的记录
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 '%,%';
查看7道真题和解析