一切福田,不離方寸,從心而覓,感無不通。

mysql逗号分隔字符串成多行数据

最近迷上将夜,就用主角做栗子了。

原始状态
转换后:
在这里插入图片描述
SQL代码

 

substring_index函数的用法可以参考这篇博客 https://www.cnblogs.com/mqxs/p/7380933.html

来来来,解释一波

1.

on条件后面(length(a.userNames) – length(replace(a.userNames,’,’,’’))+1)这个语法,是得到被逗号分隔的字段一共有几个,

为什么后面还有一个加1?

3+1=4;可以这样理解,一根绳子剪三刀可以分成四段,同理一个主演名字串,三个逗号可以分隔出四个主演的名字。

既然是将一个字段按照逗号分隔转成多行,那么现在已经确定了行数。

2.

substring_index(substring_index(a.userNames,’,’,b.help_topic_id+1),’,’,-1)的理解如下图:
宁桑

提示:

mysql.help_topic这张表我们只用到了它的help_topic_id,可以看到这个help_topic_id是从0开始一直连续的,join这张表只是为了确定数据行数。现在假设我的mysql.help_topic一共只有5条数据,那么最多可转成5行数据,若果现在主演的名字有6个就不能用mysql.help_topic这张表了。

由此看出我们完全可以找其他表来替代mysql.help_topic,只要满足表的id是连续的,且数据条数超过了你要转换的行数即可

 

from:https://blog.csdn.net/XDSXHDYY/article/details/84589486