Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql按逗号拆分列为多行

作者:岁月凉茶   发布日期:2026-02-21   浏览:108

-- 示例代码:将包含逗号分隔值的列拆分为多行

-- 假设有一个表 `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 改表名

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站