mysql列集合存储过程_mysql 存储过程实现非集合

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值