Products
GG网络技术分享 2025-11-14 03:30 3
在MySQL中,将一列数据拆分成许多行通常涉及到用SUBSTRING_INDEX函数。
虚假设我们有一个表my_table,其中有一个字段my_column包含逗号分隔的值,我们想要将个个值作为单独的行。

sql CREATE TABLE mytable ( id INT, mycolumn VARCHAR );
INSERT INTO my_table VALUES , , ;
sql
SELECT id, SUBSTRING_INDEX, ',', -1) AS value
FROM my_table
JOIN (
SELECT a.N + b.N * 10 + 1 n
FROM
a
, b
ORDER BY n
) numbers ON CHAR_LENGTH - CHAR_LENGTH)>= numbers.n - 1;
这玩意儿查询的干活原理如下:
numbers,它包含从1到足够巨大的数字,以确保Neng覆盖my_column中的分隔符数量。JOIN操作将my_table与数字表连接起来。SUBSTRING_INDEX函数来根据逗号分隔my_column中的值。numbers.n用于指定SUBSTRING_INDEX函数得返回的子字符串的索引。这玩意儿查询将返回如下后来啊:
| id | value |
|---|---|
| 1 | value1 |
| 1 | value2 |
| 1 | value3 |
| 2 | value4 |
| 2 | value5 |
| 3 | value6 |
这样,个个逗号分隔的值dou被转换成了单独的行。
Demand feedback