mysql根据逗号将字符串数据转为行数据
时间: 2023-02-14 12:28:33 浏览: 82
可以使用 MySQL 的函数 FIND_IN_SET() 来将字符串转换为行数据。
例如,如果有一个字符串 'A,B,C' 和一个表格,表格有一列 'letters',要把这个字符串转换为三行数据并插入到表格中,可以这样做:
```
INSERT INTO table (letters)
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('A,B,C', ',', n.num), ',', -1)
FROM (
SELECT a.num + b.num * 10 + 1 num
FROM (SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
,(SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
ORDER BY num
) n
WHERE n.num <= 1 + (LENGTH('A,B,C') - LENGTH(REPLACE('A,B,C', ',', '')))
```
这样就会在表格中插入三行数据,分别是 'A'、'B' 和 'C'。
注意,上面的查询是基于字符串中的逗号数量来计算要插入的行数的。如果有多余的逗号(例如字符串是 'A,B,C,'),会多插入一行空数据。
阅读全文