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

mysql explode

作者:让固执流亡丶   发布日期:2026-02-11   浏览:54

-- 示例代码:使用 MySQL 的字符串函数来模拟 explode 功能

-- 假设我们有一个包含逗号分隔值的列,我们希望将其拆分成多行
-- 表结构如下:
-- CREATE TABLE example (id INT, tags VARCHAR(255));

-- 插入一些示例数据
INSERT INTO example (id, tags) VALUES 
(1, 'tag1,tag2,tag3'),
(2, 'tag4,tag5');

-- 使用递归公用表表达式 (CTE) 来拆分字符串
WITH RECURSIVE split_tags AS (
    -- 锚点成员:选择第一部分标签
    SELECT id, SUBSTRING_INDEX(tags, ',', 1) AS tag, 
           SUBSTRING(tags, LENGTH(SUBSTRING_INDEX(tags, ',', 1)) + 2) AS remaining_tags
    FROM example
    UNION ALL
    -- 递归成员:继续拆分剩余部分
    SELECT id, SUBSTRING_INDEX(remaining_tags, ',', 1), 
           SUBSTRING(remaining_tags, LENGTH(SUBSTRING_INDEX(remaining_tags, ',', 1)) + 2)
    FROM split_tags
    WHERE remaining_tags != ''
)
SELECT id, tag
FROM split_tags;

-- 解释:
-- 1. `SUBSTRING_INDEX` 函数用于从字符串中提取指定分隔符之前的子字符串。
-- 2. 递归 CTE 通过不断分割字符串并处理剩余部分,直到没有更多的标签为止。
-- 3. 最终查询将返回每个 ID 对应的所有标签,每一行表示一个标签。

-- 注意:此方法适用于 MySQL 8.0 及以上版本,因为递归 CTE 是从 8.0 版本开始引入的。

上一篇:express mysql

下一篇:mysql json 解析

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

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

Laravel 中文站