MySQL 按指定分隔符号将某列拆分成多行
时间: 2023-09-11 22:08:34 浏览: 161
MySql数据库的列类型(字段类型).
可以使用 MySQL 中的 SUBSTRING_INDEX 函数来实现按指定分隔符将某列拆分成多行。具体做法如下:
1. 使用 SELECT 语句查询需要拆分的列,同时使用 GROUP_CONCAT 函数将每一行的值以逗号分隔的形式合并为一个字符串:
```
SELECT GROUP_CONCAT(column_name SEPARATOR ',') AS concat_str FROM table_name;
```
2. 使用 SUBSTRING_INDEX 函数将合并后的字符串按指定分隔符拆分成多行:
```
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(concat_str, ',', nums.n), ',', -1) AS column_name FROM table_name CROSS JOIN (SELECT 1 + units.i + tens.i * 10 AS n FROM (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS units CROSS JOIN (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS tens) AS nums WHERE nums.n <= 1 + LENGTH(concat_str) - LENGTH(REPLACE(concat_str, ',', ''));
```
其中,nums 表是一个包含 100 行的表,用于拆分字符串时生成行号。如果需要拆分的字符串超过 100 个,可以将 nums 表中的行数扩展到更大的数值。
以上是将某列按逗号拆分为多行的示例,如果需要按其他分隔符拆分,只需将上述语句中的逗号替换为其他符号即可。
阅读全文