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

mysql切割字符串函数

作者:一岁就很帅   发布日期:2026-04-07   浏览:64

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

-- 假设我们有一个包含逗号分隔的字符串,我们想要将其切割成多个部分。

-- 1. 使用 SUBSTRING_INDEX 函数获取逗号分隔字符串中的第一个值
SELECT SUBSTRING_INDEX('apple,banana,orange', ',', 1) AS first_value;
-- 解释:SUBSTRING_INDEX 函数可以从左到右截取字符串,直到遇到指定次数的分隔符。这里我们截取第一个逗号之前的部分。

-- 2. 获取第二个值
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('apple,banana,orange', ',', 2), ',', -1) AS second_value;
-- 解释:首先使用 SUBSTRING_INDEX 截取前两个逗号之间的部分,然后再次使用 SUBSTRING_INDEX 提取最后一个逗号之后的部分。

-- 3. 获取第三个值
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('apple,banana,orange', ',', 3), ',', -1) AS third_value;
-- 解释:同理,先截取前三个逗号之间的部分,再提取最后一个逗号之后的部分。

-- 如果需要将一个逗号分隔的字符串拆分为多行,可以使用递归 CTE(Common Table Expression)或存储过程来实现。

如果你需要更复杂的字符串切割操作,比如将逗号分隔的字符串拆分为多行,MySQL 8.0 及以上版本支持递归 CTE,可以参考以下示例:

WITH RECURSIVE split_cte AS (
    SELECT 
        SUBSTRING_INDEX(SUBSTRING_INDEX('apple,banana,orange', ',', 1), ',', -1) AS value,
        1 AS position,
        LENGTH('apple,banana,orange') - LENGTH(REPLACE('apple,banana,orange', ',', '')) + 1 AS total
    UNION ALL
    SELECT 
        SUBSTRING_INDEX(SUBSTRING_INDEX('apple,banana,orange', ',', position + 1), ',', -1),
        position + 1,
        total
    FROM split_cte
    WHERE position < total
)
SELECT value FROM split_cte;
-- 解释:这个递归 CTE 会逐个提取逗号分隔的字符串中的每个值,并将其返回为多行。

上一篇:mysql如何让自增id从1开始设置方法

下一篇:mysql慢日志怎么看

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

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

Laravel 中文站