处理数据时,遇到了需要将一行数据变成多行数据的情况
如下图数据
image.png
需要将数据处理成
image.png
相当于将project_manager_id按逗号分隔,分隔后的结果变成多行。
那么在mysql中要怎么处理呢?
在这里我们需要用到mysql函数SUBSTRING_INDEX和mysql表mysql.help_topic
substring_index介绍
substring_index(str,delim,count)
str:要处理的字符串
delim:分隔符
count:计数
SELECT SUBSTRING_INDEX('23,25,14,13',',',1)
> 23
SELECT SUBSTRING_INDEX('23,25,14,13',',',2)
>23,25
SELECT SUBSTRING_INDEX('23,25,14,13',',',-1)
>13 #返回最后一个分隔的数据
通过如下语句,则可实现一行转多行,最终实现上图的效果
SELECT project_name, SUBSTRING_INDEX(SUBSTRING_INDEX(a.project_manager_id,',',b.help_topic_id + 1),',',- 1) AS project_manager_id
FROM
(
SELECT project_name,project_manager_id
FROM test_table) a
JOIN mysql.help_topic b ON b.help_topic_id <
(LENGTH(a.project_manager_id) - LENGTH(
REPLACE(a.project_manager_id, ',', '')) + 1);
网友评论