sql server中实现一个Split表函数

发布时间:2020-12-21编辑:脚本学堂
在sql server中实现一个 Split 表函数,可以将一个字符串按指定分隔符进行分割,返回一个表。

在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,',',')

输出结果:
split_1
    
测试二:
 

复制代码 代码如下:
select * from dbo.split(',a,,b,c,d',',')

输出结果:
split_2