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

mysql分割函数

作者:让固执流亡丶   发布日期:2026-03-04   浏览:114

-- 示例代码:使用 MySQL 的字符串函数进行分割

-- 假设我们有一个包含逗号分隔值的字符串,我们想要将其分割成多行记录。
-- 这里我们使用递归公用表表达式 (CTE) 来实现这个功能。

WITH RECURSIVE split_cte AS (
    -- 锚点成员:选择第一个子字符串和剩余部分
    SELECT 
        SUBSTRING_INDEX('apple,banana,cherry,date', ',', 1) AS value,
        SUBSTRING('apple,banana,cherry,date', LENGTH(SUBSTRING_INDEX('apple,banana,cherry,date', ',', 1)) + 2) AS rest
    UNION ALL
    -- 递归成员:继续处理剩余部分,直到没有更多子字符串
    SELECT 
        SUBSTRING_INDEX(rest, ',', 1),
        SUBSTRING(rest, LENGTH(SUBSTRING_INDEX(rest, ',', 1)) + 2)
    FROM split_cte
    WHERE rest != ''
)
SELECT value FROM split_cte;

-- 解释说明:
-- 1. 使用 `SUBSTRING_INDEX` 函数从字符串中提取出第一个子字符串,并将剩余部分存储在 `rest` 列中。
-- 2. 使用递归 CTE 不断地从 `rest` 中提取子字符串,直到 `rest` 为空。
-- 3. 最终结果是每个子字符串作为一行输出。

-- 注意:此示例适用于 MySQL 8.0 及以上版本,因为递归 CTE 是从 8.0 版本开始支持的。

如果你需要更简单的分割方法,可以考虑使用用户定义的函数或存储过程,但上述方法是最直接的方式之一。

上一篇:mysql服务怎么启动

下一篇:mysql中case when

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

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

Laravel 中文站