天天看点

T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

create function get_strarraylength

T-SQL 定义分割字符串的函数

(

T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数

)

T-SQL 定义分割字符串的函数

returns int

T-SQL 定义分割字符串的函数

as

T-SQL 定义分割字符串的函数

begin

T-SQL 定义分割字符串的函数

  declare @location int

T-SQL 定义分割字符串的函数

  declare @start int

T-SQL 定义分割字符串的函数

  declare @length int

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数

  set @length=1

T-SQL 定义分割字符串的函数

  while @location<>0

T-SQL 定义分割字符串的函数

  begin

T-SQL 定义分割字符串的函数

    set @start=@location+1

T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数

    set @length=@length+1

T-SQL 定义分割字符串的函数

  end

T-SQL 定义分割字符串的函数

  return @length

T-SQL 定义分割字符串的函数

end

T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数

返回值:4

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

create function get_strarraystrofindex

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数

  @index int --取第几个元素

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

returns varchar(1024)

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

  declare @next int

T-SQL 定义分割字符串的函数

  declare @seed int

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

  set @start=1

T-SQL 定义分割字符串的函数

  set @next=1

T-SQL 定义分割字符串的函数

  set @seed=len(@split)

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

    set @start=@location+@seed

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

    set @next=@next+1

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数

返回值:9

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

create   function   f_splitstr(@sourcesql   varchar(8000),@strseprate   varchar(100))   

T-SQL 定义分割字符串的函数

  returns   @temp   table(f1   varchar(100))   

T-SQL 定义分割字符串的函数

  as     

T-SQL 定义分割字符串的函数

  begin   

T-SQL 定义分割字符串的函数

  declare   @ch   as   varchar(100)   

T-SQL 定义分割字符串的函数

  set   @sourcesql=@sourcesql+@strseprate     

T-SQL 定义分割字符串的函数

  while(@sourcesql<>'')   

T-SQL 定义分割字符串的函数

                  begin   

T-SQL 定义分割字符串的函数

                  set   @ch=left(@sourcesql,charindex(',',@sourcesql,1)-1)   

T-SQL 定义分割字符串的函数

  insert   @temp   values(@ch)   

T-SQL 定义分割字符串的函数

  set   @sourcesql=stuff(@sourcesql,1,charindex(',',@sourcesql,1),'')   

T-SQL 定义分割字符串的函数

                  end   

T-SQL 定义分割字符串的函数

  return   

T-SQL 定义分割字符串的函数

  end   

T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数
T-SQL 定义分割字符串的函数

----调用

T-SQL 定义分割字符串的函数

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

T-SQL 定义分割字符串的函数

--结果:

T-SQL 定义分割字符串的函数

1

T-SQL 定义分割字符串的函数

2

T-SQL 定义分割字符串的函数

3

T-SQL 定义分割字符串的函数

4