可以使用 MySQL 内置的函数 `SUBSTRING_INDEX` 和 `REPLACE` 来实现将一个包含逗号分割的字符串转换为多行的 SQL 语句。
假设需要将字符串 `'a,b,c,d,e'` 转换为多行,可以使用以下 SQL 语句:
```
SELECT REPLACE(SUBSTRING_INDEX('a,b,c,d,e', ',', n), ',', '') AS value
FROM (
SELECT 1 + units.i + tens.i * 10 AS n
FROM (
SELECT 0 AS i 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
) units
JOIN (
SELECT 0 AS i 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
) tens ON 1
WHERE n <= 1 + (LENGTH('a,b,c,d,e') - LENGTH(REPLACE('a,b,c,d,e', ',', '')))
) AS numbers;
```
执行以上 SQL 语句,可以得到如下结果:
```
value
-----
a
b
c
d
e
```
解释一下上述 SQL 语句:
1. `LENGTH('a,b,c,d,e') - LENGTH(REPLACE('a,b,c,d,e', ',', ''))` 可以得到字符串中逗号的个数,加 1 即为需要生成的多行数目。
2. `SELECT 1 + units.i + tens.i * 10 AS n` 生成一个包含数字序列的临时表。
3. `SUBSTRING_INDEX('a,b,c,d,e', ',', n)` 取出以逗号为分隔符的前 n 段字符串。
4. `REPLACE(SUBSTRING_INDEX('a,b,c,d,e', ',', n), ',', '')` 去掉字符串中的逗号。
通过将上述 SQL 语句中字符串 `'a,b,c,d,e'` 替换为你要处理的字符串即可实现将其通过逗号分割并变成多行。