mysql一行拆分多行
时间: 2023-09-18 11:14:36 浏览: 89
如果你想将一行数据拆分成多行,可以使用MySQL中的UNION ALL语句。例如,如果你有以下表结构:
```
CREATE TABLE test (
id INT PRIMARY KEY,
value TEXT
);
```
并且有以下数据:
```
INSERT INTO test VALUES (1, 'value1,value2,value3');
```
你可以使用以下SQL语句将一行拆分成多行:
```
SELECT id, TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(value, ',', n.digit+1), ',', -1)) AS value
FROM test
CROSS JOIN
(
SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
) n
WHERE n.digit < LENGTH(value) - LENGTH(REPLACE(value, ',', '')) + 1;
```
这将返回以下结果:
```
+----+-------+
| id | value |
+----+-------+
| 1 | value1|
| 1 | value2|
| 1 | value3|
+----+-------+
```
这个查询使用了一个数字表(n),它包含了0到3的数字,用来拆分每一行的数据。SUBSTRING_INDEX函数用来获取每个值在逗号分隔的字符串中的位置,TRIM函数用来去除每个值的前后空格。
阅读全文