mysql 存储过程实现非集合
DELIMITER $$
CREATE FUNCTION `func_get_split_str_total`(
f_string varchar(10000),f_delimiter varchar(50)
) RETURNS int(11)
BEGIN
return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));
END$$
DELIMITER $$
DROP function IF EXISTS `func_split_str` $$
CREATE FUNCTION `func_split_str`
( f_string varchar(10000),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 $$
DROP PROCEDURE IF EXISTS `pro_split_str_to_table` $$
CREATE PROCEDURE `pro_split_str_to_table`
(IN f_string varchar(10000),IN f_delimiter varchar(5))
BEGIN
declare cnt int default 0;
declare i int default 0;
set cnt = func_get_split_str_total(f_string,f_delimiter);
DROP TABLE IF EXISTS `pro_split_tmp_table`;
create temporary table `pro_split_tmp_table` (`val_` varchar(128) not null) DEFAULT CHARSET=utf8;
while i < cnt
do
set i = i + 1;
insert into pro_split_tmp_table(`val_`) values (func_split_str(f_string,f_delimiter,i));
end while;
END$$
call pro_split_str_to_table('a,s,d,f,g,h,j',',');
SELECT * from pro_split_tmp_table;