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

mysql 拆分逗号分隔

作者:刃起风啸凌   发布日期:2025-08-26   浏览:83

-- 示例代码:将逗号分隔的字符串拆分为多行

-- 创建一个辅助函数,用于生成数字序列
DELIMITER $$
CREATE FUNCTION generate_series(max_num INT)
RETURNS VARCHAR(10000)
DETERMINISTIC
BEGIN
    DECLARE result VARCHAR(10000) DEFAULT '';
    DECLARE i INT DEFAULT 1;

    WHILE i <= max_num DO
        SET result = CONCAT(result, ',', i);
        SET i = i + 1;
    END WHILE;

    RETURN SUBSTRING(result, 2);
END$$
DELIMITER ;

-- 创建一个拆分函数,将逗号分隔的字符串拆分为多行
DELIMITER $$
CREATE FUNCTION split_string(str TEXT, delim CHAR(1))
RETURNS TABLE (value VARCHAR(255))
DETERMINISTIC
BEGIN
    RETURN 
    SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(str, delim, n.n), delim, -1) AS value
    FROM (SELECT a.N + b.N * 10 + 1 AS n
          FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a,
               (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
         ) n
    WHERE n.n <= 1 + (LENGTH(str) - LENGTH(REPLACE(str, delim, '')));
END$$
DELIMITER ;

-- 使用示例
SET @str = 'apple,banana,orange';
SELECT value FROM split_string(@str, ',');

解释说明:

  1. generate_series 函数

    • 该函数用于生成一个数字序列。虽然在这个例子中没有直接使用,但在某些场景下可以用来生成行数或索引。
  2. split_string 函数

    • 这个函数接收两个参数:str(逗号分隔的字符串)和 delim(分隔符,默认为逗号)。
    • 它通过生成一系列数字(n.n),然后利用 SUBSTRING_INDEX 函数逐个提取出每个子字符串,并返回结果集。
  3. 使用示例

    • 设置一个包含逗号分隔值的变量 @str
    • 调用 split_string 函数并传入 @str 和分隔符 ,,最终返回拆分后的每一项。

上一篇:mysql常用语句

下一篇:mysql重启命令linux

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

存储过程mysql

mysql with语句

mysql时间加减

brew 启动mysql

unsigned在mysql中是什么意思

mysql 备份恢复

mysql 插入更新

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

Laravel 中文站