Sqlserver 字串分割

2021-06-21 20:38:11 字數 1767 閱讀 8827

--字串分割,返回字串按指定分割符分割後長度

--使用:select dbo.fun_get_strarraylength('1,2,3,4',',')

create function [dbo].[fun_get_strarraylength]

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

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

)returns int

asbegin

declare @location int

declare @start int

declare @length int

set @str=ltrim(rtrim(@str))  --去左右空格

/*charindex()

charindex (<』substring_expression』>, )

返回字串中某個指定的子串出現的開始位置。

其中substring _expression 是所要查詢的字元表示式,expression 可為字串也可為列名表示式。如果沒有發現子串,則返回0 值。

*/ set @location=charindex(@split,@str) --找到第乙個分割符所在的位置 如不存在返回0

set @length=1

while @location<>0

begin

set @start=@location+1

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

set @length=@length+1

endreturn @length

endgo

--字串分割,返回字串指定位置字元

--select [dbo].[fun_get_strarraystrofindex]('1,2,3,4',',',3)

create function [dbo].[fun_get_strarraystrofindex]

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

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

@index int --取第幾個元素

)returns varchar(1024)

asbegin

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

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

--這兒存在兩種情況:1、字串不存在分隔符號 2、字串中存在分隔符號,跳出while迴圈後,@location為0,那預設為字串後邊有乙個分隔符號。

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

endgo

SQL SERVER分割字串

1 使用指定的字串分割,返回分割後元素的個數 create function get strlength str varchar 1024 split varchar 10 returns int asbegin declare location int declare start int decl...

sqlserver 字串分割函式

create function split charstring nvarchar 4000 字串 separator char 1 分割符 returns tb temp table string nvarchar 4000 asbegin declare beginindex int,separ...

SQLserver 字串分割函式

create function get strarraystrofindex str varchar 1024 要分割的字串 split varchar 10 分隔符號 index int 取第幾個元素 returns varchar 1024 as begin declare location i...