在 Mysql 中并没有内置的 split() 函数,但可以通过自定义函数或存储过程来实现字符串分割。以下是几种实现方法: 自定义函数 fn_split(): DROP FUNCTioN IF EXISTS f
在 Mysql 中并没有内置的 split() 函数,但可以通过自定义函数或存储过程来实现字符串分割。以下是几种实现方法:
自定义函数 fn_split()
:
DROP FUNCTioN IF EXISTS fn_split;
DELIMITER $$
CREATE FUNCTION fn_split(s TEXT, del CHAR(1), i INT)
RETURNS VARCHAR(1024)
DETERMINISTIC -- always returns same results for same input parameters
sql SECURITY INVOKER
BEGIN
DECLARE n INT;
-- get max number of items
SET n = LENGTH(s) - LENGTH(REPLACE(s, del, '')) + 1;
IF i > n THEN
RETURN NULL;
ELSE
RETURN SUBSTRING_INDEX(SUBSTRING_INDEX(s, del, i), del, -1);
END IF;
END$$
DELIMITER ;
存储过程 splitString()
:
DROP PROCEDURE IF EXISTS `splitString`;
DELIMITER $$
CREATE PROCEDURE `splitString`(IN f_string VARCHAR(1000), IN f_delimiter VARCHAR(5))
BEGIN
DECLARE cnt INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
SET cnt = LENGTH(f_string) - LENGTH(REPLACE(f_string, f_delimiter, '')) + 1;
DROP TABLE IF EXISTS temp_split_string;
CREATE TEMPORARY TABLE temp_split_string (id INT AUTO_INCREMENT PRIMARY KEY, val VARCHAR(50));
WHILE (i < cnt) DO
INSERT INTO temp_split_string (val)
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(f_string, f_delimiter, i + 1), f_delimiter, -1);
SET i = i + 1;
END WHILE;
SELECT * FROM temp_split_string;
DROP TABLE IF EXISTS temp_split_string;
END$$
DELIMITER ;
mysql中一个很好用的截取字符串的函数:substring_index
substring_index("字符串","分割符",位置N)
详细说明: 首先,设待处理对象字符串为"1,2,3,4,5",这里截取的依据是逗号:",",具体要截取第N个逗号前部分的字符。
意思是:在字符串中以逗号为索引,获取不同索引位的字符。
select substring_index("1,2,3,4,5",',',2)
-- 1,2
本文由 mdnice 多平台发布
来源地址:https://blog.csdn.net/gzjgzj12345/article/details/129384182
--结束END--
本文标题: mysql如何实现split操作?
本文链接: https://lsjlt.com/news/376350.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0