这2天在写存储过程的时候发现SQL里没有Split函数在需要分割字符串的时候很是不方便,比如有时候存储过程某个参数是个用逗号做分隔符的字符串,就需要用到Split了。本着不重复制造轮子的原则,先上网搜索了一下,果然已经有兄弟实现了Split方法并且无私共享了代码。
CREATEFUNCTION dbo.Split(@String varchar(8000), @Delimiter char(1)) returns @temptable TABLE (items varchar(8000)) as begin declare @idx int declare @slice varchar(8000) select @idx = 1 iflen(@String)<1 or @String isnullreturn while @idx!= 0 begin set @idx =charindex(@Delimiter,@String) if @idx!=0 set @slice =left(@String,@idx - 1) else set @slice = @String if(len(@slice)>0) insertinto @temptable(items)values(@slice) set @String =right(@String,len(@String)- @idx) iflen(@String)= 0 break end return end
只需要运行以上SQL,将其保存成名为Split的Table-Valued function,就可以像C#一样在SQL里使用Split了,例子如下
select top 10 * from dbo.split(‘Chennai,Bangalore,Mumbai’,’,’)
测试结果如下图所示
最后感谢一下提供源码的兄弟,原文见Split Function in Sql Server to break Comma-Separated Strings into Table
Leave a Reply
You must be logged in to post a comment.