ALTER function [dbo].[f_split2](@t varchar(8000),@s1 varchar(10),@s2 varchar(10))
returns @retab table(F0000 int,F0001 varchar(20),F0002 varchar(100))
--实现split功能 的函数 ,GULAICHENG
-- 1,a;2,b;3,c;4,d
as
begin
declare @i int,@j int,@k int;
set @k=1
while(1=1)
begin
select @i = charindex(@s1,@t);
if(@i>0)
begin
select @j = charindex(@s2,@t);
insert @retab select @k,substring(@t,1,@j-1),substring(@t,@j+1,@i-@j-1);
select @t = substring(@t,@i+1,len(@t))
end
else
begin
select @j = charindex(@s2,@t);
insert @retab select @k,substring(@t,1,@j-1),substring(@t,@j+1,len(@t));
break;
end
set @k=@k+1
end
return
end
如,执行以下语句
select * from [f_split2]('a,1;b,3;c,4;d,5',';',',')
返回:
F0000 F0001 F0002
1 a 1
2 b 3
3 c 4
4 d 5
这里,逗号和分号可以以其它的符号来代替。