写一个mysql语句,a表中只有一列,每列有多个逗号隔开的数据,部分行逗号数较多,如何以逗号为分隔符将其分列
时间: 2024-01-18 19:03:22 浏览: 26
sql里将重复行数据合并为一行数据使用逗号进行分隔
可以使用 MySQL 内置的字符串函数 `SUBSTRING_INDEX` 将每行数据按逗号分割成多列。
假设 a 表中只有一列名为 `col`,数据如下:
```
+-----------------+
| col |
+-----------------+
| 1,2,3,4 |
| 5,6 |
| 7,8,9,10,11,12 |
+-----------------+
```
可以使用以下语句将其按逗号分割成多列:
```mysql
SELECT
SUBSTRING_INDEX(col, ',', 1) AS col_1,
SUBSTRING_INDEX(SUBSTRING_INDEX(col, ',', 2), ',', -1) AS col_2,
SUBSTRING_INDEX(SUBSTRING_INDEX(col, ',', 3), ',', -1) AS col_3,
SUBSTRING_INDEX(SUBSTRING_INDEX(col, ',', 4), ',', -1) AS col_4,
SUBSTRING_INDEX(SUBSTRING_INDEX(col, ',', 5), ',', -1) AS col_5,
SUBSTRING_INDEX(SUBSTRING_INDEX(col, ',', 6), ',', -1) AS col_6
FROM a;
```
执行后得到的结果如下:
```
+-------+-------+-------+--------+-------+-------+
| col_1 | col_2 | col_3 | col_4 | col_5 | col_6 |
+-------+-------+-------+--------+-------+-------+
| 1 | 2 | 3 | 4 | NULL | NULL |
| 5 | 6 | NULL | NULL | NULL | NULL |
| 7 | 8 | 9 | 10 | 11 | 12 |
+-------+-------+-------+--------+-------+-------+
```
这样就可以将每行数据按逗号分割成多列了。需要注意的是,这个语句只适用于最多分割出 6 列的情况,如果需要分割出更多列,需要继续添加 `SUBSTRING_INDEX` 函数。
阅读全文