mysql存储过程字符串截取函数_mysql存储过程下分割字符串
函数
MySQL存储过程可以⽤于分割字符串,下⾯就为您详细介绍这种MySQL存储过程的⽤法,供您参考学习之⽤。    现有⼀段字符串,如apple,banana,orange,pears,grape,要把它按照逗号(,)分割成:  apple  banana  orange  pears  grape  然后使⽤where in()⽅法可以查询。1、具体函数:
# 函数:func_split_TotalLength
DELIMITER $$
DROP function IF EXISTS `func_split_TotalLength` $$
CREATE DEFINER=`root`@`%` FUNCTION `func_split_TotalLength`
(f_string varchar(1000),f_delimiter varchar(5)) RETURNS int(11)mysql视图和存储过程
BEGIN
# 计算传⼊字符串的总length
return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));
END$$
DELIMITER;
# 函数:func_split
DELIMITER $$
DROP function IF EXISTS `func_split` $$
CREATE DEFINER=`root`@`%` FUNCTION `func_split`
(f_string varchar(1000),f_delimiter varchar(5),f_order int) RETURNS varchar(255) CHARSET utf8
BEGIN
# 拆分传⼊的字符串,返回拆分后的新字符串
declare result varchar(255) default '';
set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));
return result;
END$$
DELIMITER;
# 存储过程:splitString
DELIMITER $$
DROP PROCEDURE IF EXISTS `splitString` $$
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 = func_split_TotalLength(f_string,f_delimiter);
DROP TABLE IF EXISTS `tmp_split`;
create temporary table `tmp_split` (`status` varchar(128) not null) DEFAULT CHARSET=utf8;
while i
do
set i = i + 1;
insert into tmp_split(`status`) values (func_split(f_string,f_delimiter,i));
end while;
END$$
DELIMITER;
2、测试是否能成功分割
call splitString("apple,banana,orange,pears,grape",",");
select * from tmp_split;
运⾏结果如下,说明分割成功:
mysql> call splitString("apple,banana,orange,pears,grape",",");
select * from tmp_split;
Query OK, 1 row affected
+--------+  | status |  +--------+  | apple  |  | banana |  | orange |  | pears  |  | grape  |  +--------+  5 rows in set mysql>
3、应⽤where in()查询
# 先传⼊字符串,分割后保存在临时表tmp_split中
call splitString("apple,banana,orange,pears,grape",",");
# 将查询的结果作为其他查询的条件来使⽤
select * from fruit where in(select * from tmp_split);
以上就是利⽤MySQL存储过程分割字符串的⽅法介绍。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。