-- 示例代码:将包含逗号分隔值的列拆分为多行
-- 假设有一个表 `my_table`,其中有一列 `comma_separated_values` 包含逗号分隔的值。
-- 我们希望将这些值拆分为多行。
-- 创建示例表和数据
CREATE TABLE my_table (
id INT PRIMARY KEY,
comma_separated_values VARCHAR(255)
);
INSERT INTO my_table (id, comma_separated_values) VALUES
(1, 'apple,banana,cherry'),
(2, 'dog,cat,bird');
-- 使用递归CTE(Common Table Expression)来拆分逗号分隔的值为多行
WITH RECURSIVE split_cte AS (
SELECT
id,
SUBSTRING_INDEX(comma_separated_values, ',', 1) AS value,
SUBSTRING(comma_separated_values, LENGTH(SUBSTRING_INDEX(comma_separated_values, ',', 1)) + 2) AS remaining
FROM my_table
UNION ALL
SELECT
id,
SUBSTRING_INDEX(remaining, ',', 1),
SUBSTRING(remaining, LENGTH(SUBSTRING_INDEX(remaining, ',', 1)) + 2)
FROM split_cte
WHERE remaining != ''
)
SELECT id, value FROM split_cte;
-- 解释:
-- 1. `SUBSTRING_INDEX` 函数用于从字符串中提取指定分隔符之前的子字符串。
-- 2. `RECURSIVE CTE` 递归地处理剩余的字符串部分,直到没有更多的逗号分隔值。
-- 3. 最终查询结果将每一行中的逗号分隔值拆分为多个行。
上一篇:mysql查看死锁的命令
下一篇:mysql 改表名
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站