-- 示例代码:将逗号分隔的字符串拆分为多行
-- 创建一个辅助函数,用于生成数字序列
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, ',');
generate_series 函数:
split_string 函数:
str
(逗号分隔的字符串)和 delim
(分隔符,默认为逗号)。SUBSTRING_INDEX
函数逐个提取出每个子字符串,并返回结果集。使用示例:
@str
。split_string
函数并传入 @str
和分隔符 ,
,最终返回拆分后的每一项。上一篇:mysql常用语句
下一篇:mysql重启命令linux
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站