1、使用指定的字串分割,返回分割後元素的個數
create function get_strlength
(@str varchar(1024),
@split varchar(10)
)returns int
asbegin
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
endreturn @length
end呼叫方法:select dbo.get_strlength('7,5,6,7,a,f,d',',')
2、按指定符號分割字串,返回分割後指定索引的第幾個元素,像陣列一樣
create function get_strofindex
(@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
end--說明:這兒存在兩種情況:1、字串不存在分隔符號 2、字串中存在分隔符號,跳出while迴圈後,@location為0,那預設為字串後邊有乙個分隔符號。
if @location=0
select @location=len(@str)+1
return substring(@str,@start,@location-@start)
end呼叫方法:select dbo.get_strofindex('8,9,3,3,4,5',',',26)
3、結合上邊兩個函式,返回分割後的元素
create function f_splitstr
(@sourcesql varchar(8000),
@strseprate varchar(100)
)returns @temp table (f1 varchar(100))
asbegin
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),'')
endreturn
end呼叫方法:select * from f_splitstr('1,2,3,4,5,6',',')
Sqlserver 字串分割
字串分割,返回字串按指定分割符分割後長度 使用 select dbo.fun get strarraylength 1,2,3,4 create function dbo fun get strarraylength str varchar 1024 要分割的字串 split varchar 10 ...
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...