-- 示例代码:将逗号分隔的字符串转换为多行
-- 假设有一个包含逗号分隔值的表和列
CREATE TABLE comma_separated_values (
id INT PRIMARY KEY,
values_list VARCHAR(255)
);
-- 插入示例数据
INSERT INTO comma_separated_values (id, values_list) VALUES
(1, 'apple,banana,cherry'),
(2, 'dog,cat,bird');
-- 使用递归CTE将逗号分隔的字符串拆分为多行
WITH RECURSIVE split_values AS (
SELECT
id,
SUBSTRING_INDEX(SUBSTRING_INDEX(values_list, ',', 1), ',', -1) AS value,
SUBSTRING_INDEX(values_list, ',', LENGTH(values_list) - LENGTH(REPLACE(values_list, ',', ''))) AS remaining
FROM comma_separated_values
UNION ALL
SELECT
id,
SUBSTRING_INDEX(SUBSTRING_INDEX(remaining, ',', 1), ',', -1),
SUBSTRING_INDEX(remaining, ',', LENGTH(remaining) - LENGTH(REPLACE(remaining, ',', '')))
FROM split_values
WHERE remaining != ''
)
SELECT id, value
FROM split_values
WHERE value != '';
-- 解释说明:
-- 1. 创建一个包含逗号分隔值的表 `comma_separated_values`。
-- 2. 插入一些示例数据。
-- 3. 使用递归CTE(Common Table Expression)来逐个提取逗号分隔的值,并将其转换为多行。
-- 4. 最终查询结果将显示每个ID对应的多个值,每行一个值。
上一篇:mysql 删除所有表
下一篇:mysql 新建数据库
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站