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

mysql字符串split成多个

作者:角落里哭泣   发布日期:2026-05-24   浏览:109

-- MySQL 中没有直接的字符串分割函数,但可以通过创建自定义函数来实现。
-- 以下是一个将字符串按分隔符拆分成多行记录的示例代码:

DELIMITER $$

CREATE FUNCTION split_string(str VARCHAR(1000), delim VARCHAR(12), pos INT)
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
    RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos),
                             LENGTH(SUBSTRING_INDEX(str, delim, pos - 1)) + 1),
                   delim, '');
END$$

DELIMITER ;

-- 使用示例:
-- 假设我们有一个字符串 'apple,banana,cherry',我们想将其按逗号分割成多行。

SELECT split_string('apple,banana,cherry', ',', 1); -- 返回 'apple'
SELECT split_string('apple,banana,cherry', ',', 2); -- 返回 'banana'
SELECT split_string('apple,banana,cherry', ',', 3); -- 返回 'cherry'

-- 如果需要将整个字符串拆分成多行记录,可以结合表生成器(如 numbers 表)或递归查询来实现。
-- 下面是一个使用 numbers 表的示例:

WITH RECURSIVE numbers AS (
    SELECT 1 AS n
    UNION ALL
    SELECT n + 1 FROM numbers WHERE n < (SELECT LENGTH('apple,banana,cherry') - LENGTH(REPLACE('apple,banana,cherry', ',', '')))
)
SELECT split_string('apple,banana,cherry', ',', n) AS value
FROM numbers;

解释说明:

  1. split_string 函数:这是一个用户自定义函数,用于从给定的字符串中提取指定位置的子字符串。它接受三个参数:要分割的字符串 str、分隔符 delim 和要提取的部分的位置 pos

  2. WITH RECURSIVE 查询:这个查询生成一个递增的数字序列(numbers),然后使用 split_string 函数根据这些数字来提取每个子字符串,并返回结果作为多行记录。

  3. 注意事项:MySQL 没有内置的字符串分割函数,因此通常需要通过自定义函数或结合其他技术(如递归查询)来实现类似的功能。

上一篇:mysql分组后排序然后取每组第一个

下一篇:mysql替换函数

大家都在看

mysql二级索引

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

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

Laravel 中文站