SQL44 修复串列了的记录

题目主要信息:

  • 录题同学有一次手误将部分记录的试题类别tag、难度、时长同时录入到了tag字段,请帮忙找出这些录错了的记录,并拆分后按正确的列类型输出
  • 试卷信息表examination_info(exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间)

问题拆分:

  • 以difficulty这一列为空字符这个条件,筛选出录错的试卷ID及tag。知识点:select...from...where...
  • 截取tag字符串第一个逗号前的字符串作为输出的tag,截取tag字符串第二个逗号前面的部分再截取这个部分第一个逗号后面的部分作为输出的difficulty,最后截取tag字符串最后一个逗号后的部分作为duration输出。知识点:substring_index()

代码:

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 examination_info
where difficulty = ''