三、结合上边两个函数,像数组一样遍历字符串中的元素(表值函数)
  1 create function Func_SplitStr(@SourceSql varchar(8000), @StrSeprate varchar(100))
  2   returns @temp table(F1 varchar(100))
  3   as
  4   begin
  5   declare @ch as varchar(100)
  6   set @SourceSql=@SourceSql+@StrSeprate
  7   while(@SourceSql<>'')
  8   begin
  9     set @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)
  10     insert @temp values(@ch)
  11     set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')
  12   end
  13   return
  14   end
  15 go
  ----调用
  select * from dbo.Func_SplitStr('1,2,3,4',',')
  --结果:
  1
  2
  3
  4
  另一种方式(表值函数):
  1 create function Func_SplitStr(@str nvarchar(2000),@split nvarchar(2))
  2 returns @t table(AccountCodeID int )
  3 as
  4 begin
  5 declare @tmpAccountCodeID int,@getIndex int
  6 set  @getIndex=charindex(',',@str)
  7 while(@getIndex<>0)
  8 begin
  9     set @tmpAccountCodeID=convert(int,substring(@str,1,@getIndex-1))
  10     insert into @t(AccountCodeID) values (@tmpAccountCodeID)
  11     set @str=stuff(@str,1,@getIndex,'')
  12     set  @getIndex=charindex(',',@str)
  13 end
  14 insert into @t(AccountCodeID) values (@str)
  15 return
  16 end
  17 go
  ----调用
  select * from dbo.Func_SplitStr('1,2,3,4',',')
  --结果:
  1
  2
  3
  4