mysql-一行分隔成多行数据

mysql将某个字段有分隔符号分隔成多行数据

SELECT
	a.id,
	a. NAME,
	substring_index(
		substring_index(
			a.name,
			',',
			b.help_topic_id + 1
		),
		',' ,- 1
	) AS name
FROM
	a
JOIN mysql.help_topic b ON b.help_topic_id < (
	length(a.name) - length(
		REPLACE (a.name, ',', '')
	) + 1
)

  

a.需要查询的表
b.辅助表:其需要有一个字段为数字类型且数据为连续,从0开始.如mysql.help_topic表中的help_topic_id字段
a表与b表关联
符合a与b表的数据形成迪卡尔积
然后对数据结果进行处理
关联条件
b.help_topic_id < (
length(a.name) - length(
REPLACE (a.name, ',', '')
) + 1
)
表示 辅助表中的help_topic_id的值小于a表中name中的分隔符号,的数量的值
结果字段处理第一个函数

SUBSTRING_INDEX(str,delim,count)
str:要做处理的字符串对象。
delim:处理时用来做标识符的东西。
count:怎么取值。
count是正值:顺着数,标识符第count次出现时在它前面的所有的数据。
count是负值:倒着数,标识符第count次出现时在它后面的所有的数据。

原文地址:https://www.cnblogs.com/lantuanqing/p/11284487.html