您的位置:首页 > 数据库

SQL Server字符串分割

2010-01-27 10:11 246 查看
一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。




CREATE function Get_StrArrayLength


(


@str varchar(1024), --要分割的字符串


@split varchar(10) --分隔符号


)


returns int


as


begin


declare @location int


declare @start int


declare @length int




set @str=ltrim(rtrim(@str))


set @location=charindex(@split,@str)


set @length=1


while @location<>0


begin


set @start=@location+1


set @location=charindex(@split,@str,@start)


set @length=@length+1


end


return @length


end


调用示例:select dbo.Get_StrArrayLength('78,1,2,3',',')


返回值:4




二、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便




CREATE function Get_StrArrayStrOfIndex


(


@str varchar(1024), --要分割的字符串


@split varchar(10), --分隔符号


@index int --取第几个元素


)


returns varchar(1024)


as


begin


declare @location int


declare @start int


declare @next int


declare @seed int




set @str=ltrim(rtrim(@str))


set @start=1


set @next=1


set @seed=len(@split)




set @location=charindex(@split,@str)


while @location<>0 and @index>@next


begin


set @start=@location+@seed


set @location=charindex(@split,@str,@start)


set @next=@next+1


end


if @location =0 select @location =len(@str)+1


--这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。




return substring(@str,@start,@location-@start)


end


调用示例:select dbo.Get_StrArrayStrOfIndex('8,9,4',',',2)


返回值:9




三、结合上边两个函数,象数组一样遍历字符串中的元素




create function f_splitstr(@SourceSql varchar(8000),@StrSeprate varchar(100))


returns @temp table(F1 varchar(100))


as


begin


declare @ch as varchar(100)


set @SourceSql=@SourceSql+@StrSeprate


while(@SourceSql<>'')


begin


set @ch=left(@SourceSql,charindex(@StrSeprate,@SourceSql,1)-1)


insert @temp values(@ch)


set @SourceSql=stuff(@SourceSql,1,charindex(@StrSeprate,@SourceSql,1),'')


end


return


end






----调用


select * from dbo.f_splitstr('1,2,3,4',',')


--结果:


1


2


3


4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: