如何将逗号分隔开的字符串,拆分成多行

通常行转列可以用group_concat实现;

列转行可以使用使用union all 间接拼接来实现。

如:
有个字符串"a,b,c" 要分为多行,可以有下面的操作。
1.第一步,先实现split的功能(借助SUBSTRING_INDEX函数):
mysql> select SUBSTRING_INDEX(‘a,b,c’,‘,’,1),SUBSTRING_INDEX(SUBSTRING_INDEX(‘a,b,c’,‘,’,2),‘,’,-1),SUBSTRING_INDEX(‘a,b,c’,‘,’,-1);
±-------------------------------±-------------------------------------------------------±--------------------------------+
| SUBSTRING_INDEX(‘a,b,c’,‘,’,1) | SUBSTRING_INDEX(SUBSTRING_INDEX(‘a,b,c’,‘,’,2),‘,’,-1) | SUBSTRING_INDEX(‘a,b,c’,‘,’,-1) |
±-------------------------------±-------------------------------------------------------±--------------------------------+
| a | b | c |
±-------------------------------±-------------------------------------------------------±--------------------------------+
1 row in set (0.00 sec)

2.第2步,列转行(借助union):
mysql> select SUBSTRING_INDEX(‘a,b,c’,‘,’,1) union select SUBSTRING_INDEX(SUBSTRING_INDEX(‘a,b,c’,‘,’,2),‘,’,-1) union select SUBSTRING_INDEX(‘a,b,c’,‘,’,-1);
±-------------------------------+
| SUBSTRING_INDEX(‘a,b,c’,‘,’,1) |
±-------------------------------+
| c |
| b |
| a |
±-------------------------------+
3 rows in set (0.01 sec)

1 个赞