Mysql 单行转多行,把逗号分隔的字段拆分成多行
在MySQL中,可以使用SUBSTRING_INDEX
和REPLICATE_ROW
函数组合来将逗号分隔的字段拆分成多行。以下是一个示例代码:
-- 假设有一个表叫做`test_table`,有一个字段叫做`comma_separated_values`
-- 下面的SQL语句将会拆分这个字段中的逗号分隔值,并且为每个值创建一个新行
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.comma_separated_values, ',', numbers.n), ',', -1) value
FROM (
SELECT 1 n 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
) numbers
JOIN test_table t
CROSS JOIN (SELECT COUNT(*) cnt FROM test_table) vars
WHERE numbers.n <= vars.cnt
AND SUBSTRING_INDEX(t.comma_separated_values, ',', -1) <> '';
这个查询的核心思想是使用一个数字表(在这个例子中是一个由自联接创建的临时表),然后与原始表进行CROSS JOIN
,以便每个原始行都可以与数字表中的每个数字配对。SUBSTRING_INDEX
函数用于分割字段中的值。
请注意,这个例子假设你有一个名为test_table
的表和一个名为comma_separated_values
的字段,该字段包含逗号分隔的值。这个查询可能需要根据实际情况进行调整。
评论已关闭