- 1、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。
- CREATEfunction Get_StrArrayLength
- (
- @str varchar(1024),
- @split varchar(10)
- )
- returnsint
- 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
- 二、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便
- CREATEfunction Get_StrArrayStrOfIndex
- (
- @str varchar(1024),
- @split varchar(10),
- @indexint
- )
- returnsvarchar(1024)
- as
- begin
- declare @location int
- declare @start int
- declare @nextint
- 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
- returnsubstring(@str,@start,@location-@start)
- end
- 调用示例:select dbo.Get_StrArrayStrOfIndex('8,9,4',',',2)
- 返回值:9
- 三、结合上边两个函数,象数组一样遍历字符串中的元素
- createfunction f_splitstr(@SourceSql varchar(8000),@StrSeprate varchar(100))
- returns @temptable(F1 varchar(100))
- as
- begin
- declare @ch asvarchar(100)
- set @SourceSql=@SourceSql+@StrSeprate
- while(@SourceSql<>'')
- begin
- set @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)
- insert @tempvalues(@ch)
- set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')
- end
- return
- end
- select * from dbo.f_splitstr('1,2,3,4',',')
- 1
- 2
- 3
- 4
posted on
2013-06-05 18:51
Kelly_HanShuai
阅读(
170)
评论()
收藏
举报