本例中实现的split函数,调用方法如下:
复制代码 代码示例:
call proc_split('a,b,c',',');
select * from splittable
以下是mysql/procedure/ target=_blank class=infotextkey>mysql存储过程实现的split函数,代码:
复制代码 代码示例:
CREATE PROCEDURE `proc_split`(
inputstring varchar(1000),
delim char(1)
)
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
begin
declare strlen int;
declare last_index int;
declare cur_index int;
declare cur_char VARCHAR(200);
declare len int;
set cur_index=1;
set last_index=0;
set strlen=length(inputstring);
drop temporary table if exists splittable;/**/
create TEMPORARY table splittable(
id int AUTO_INCREMENT,
value VARCHAR(20),
PRIMARY KEY (`ID`),
UNIQUE KEY `ID` (`ID`)
) ;
WHILE(cur_index<=strlen) DO
begin
if substring(inputstring from cur_index for 1)=delim or cur_index=strlen then
set len=cur_index-last_index-1;
if cur_index=strlen then
set len=len+1;
end if;
insert into splittable(`value`)values(substring(inputstring from (last_index+1) for len));
set last_index=cur_index;
end if;
set cur_index=cur_index+1;
END;
end while;
end
小编觉得本例还不错,即学习了mysql存储过程,又掌握了split函数的实现方法,一举两得。