在sql server中实现一个 Split 表函数,可以将一个字符串按指定分隔符进行分割,返回一个表。
复制代码 代码如下:
--Split 表函数将一个字符串按指定分隔符进行分割,返回一个表。
create function split(
@string varchar(255),--待分割字符串
@separator varchar(255)--分割符
)returns @array table(item varchar(255))
as
begin
declare @begin int,@end int,@item varchar(255)
set @begin = 1
set @end=charindex(@separator,@string,@begin)
while(@end<>0)
begin
set @item = substring(@string,@begin,@end-@begin)
insert into @array(item) values(@item)
set @begin = @end+1
set @end=charindex(@separator,@string,@begin)
end
set @item = substring(@string,@begin,len(@string)+1-@begin)
if (len(@item)>0)
insert into @array(item) values(substring(@string,@begin,len(@string)+1-@begin))
return
end
注:分割结果仿照Java的字符串方法split。
下面来看两个测试用的例子。
测试一:
复制代码 代码如下:
select * from dbo.split('a,b,c,d',',')
-----或者(待分割字符串末尾多了个逗号)
select * from dbo.split('a,b,c,d,',',')
输出结果:
测试二:
复制代码 代码如下:
select * from dbo.split(',a,,b,c,d',',')
输出结果: