mysql 儲存過程實現非集合
阿新 • • 發佈:2018-12-05
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;