明确题意:
部分记录的试题类别tag、难度、时长同时录入到了tag字段,找出这些录错了的记录,并拆分后按正确的列类型输出。
问题分解:
- 筛选出录错了的记录:WHERE tag LIKE '%,%'
- 提取tag,第一个逗号前的值:substring_index(tag, ',', 1) AS tag
- 提取难度,第二个逗号前倒数第一个逗号后:substring_index(substring_index(tag, ',', 2), ',', -1) AS difficulty
- 提取时长,最后一个逗号后,并类型转换:CAST( substring_index(tag, ',', -1) AS DECIMAL ) AS duration
细节问题:
- 表头重命名:as
完整代码:
SELECT exam_id,
substring_index(tag, ',', 1) AS tag,
substring_index(substring_index(tag, ',', 2), ',', -1) AS difficulty,
CAST( substring_index(tag, ',', -1) AS DECIMAL ) AS duration
FROM examination_info
WHERE tag LIKE '%,%';