Mysql 单行转多行,把逗号分隔的字段拆分成多行

一、拆分前后的数据

在这里插入图片描述

二、执行SQL

select substring_index(substring_index(a.gzlx,',',b.help_topic_id+1),',',-1) gzlxname, a.gzlx,a.*
from dt_task_zxgz_info a 
join mysql.help_topic b 
on b.help_topic_id < (length(a.gzlx) - length(replace(a.gzlx,',',''))+1) 

三、解释说明

1、help_topic
本身是Mysql一个帮助解释注释表,用于解释Mysql各种专有名词,由于这张表数据ID是从0顺序增加的,方便我们用于计数

2、substring_index
MySQL SUBSTRING_INDEX() 从给定字符串中返回指定数量的分隔符出现之前的子字符串。

当指定数字为正数时从最终分隔符的左侧返回子字符串,当指定数字为负数时从最终分隔符的右侧返回子字符串。

如果指定的次数大于分隔符的出现次数,则返回的子字符串将是总字符串。如果指定的数字为 0,则不会从给定的字符串中获取任何内容。