- 一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。
-
- 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
-
-
- 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(',',@SourceSql,1)-1)
- insert @temp values(@ch)
- set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')
- end
- return
- end
-
-
-
- select * from dbo.f_splitstr('1,2,3,4',',')
-
posted @
2012-08-09 16:51
看看我的眼神
阅读(
987)
评论()
收藏
举报