1 create function Func_StrArrayLength 2 ( 3 @str varchar(1024), --要分割的字符串 4 @split varchar(10) --分隔符號(hào) 5 ) 6 returns int 7 as 8 begin 9 declare @location int 10 declare @start int 11 declare @length int 12 13 set @str=ltrim(rtrim(@str)) 14 set @location=charindex(@split,@str) 15 set @length=1 16 while @location<>0 17 begin 18 set @start=@location+1 19 set @location=charindex(@split,@str,@start) 20 set @length=@length+1 21 end 22 return @length 23 end24 go調(diào)用示例:selectdbo.Func_StrArrayLength('78,1,2,3',',')返回值:4二、按指定符號(hào)分割字符串,返回分割后指定索引的第幾個(gè)元素,象數(shù)組一樣方便(標(biāo)量值函數(shù))
1 create function Func_StrArrayStrOfIndex 2 ( 3 @str varchar(1024), --要分割的字符串 4 @split varchar(10), --分隔符號(hào) 5 @index int --取第幾個(gè)元素 6 ) 7 returns varchar(1024) 8 as 9 begin 10 declare @location int 11 declare @start int 12 declare @next int 13 declare @seed int 14 15 set @str=ltrim(rtrim(@str)) 16 set @start=1 17 set @next=1 18 set @seed=len(@split) 19 20 set @location=charindex(@split,@str) 21 while @location<>0 and @index>@next 22 begin 23 set @start=@location+@seed 24 set @location=charindex(@split,@str,@start) 25 set @next=@next+1 26 end 27 if @location =0 select @location =len(@str)+1 28 --這兒存在兩種情況:、字符串不存在分隔符號(hào)2、字符串中存在分隔符號(hào),跳出while循環(huán)后,@location為,那默認(rèn)為字符串后邊有一個(gè)分隔符號(hào)。 29 30 return substring(@str,@start,@location-@start) 31 end32 go調(diào)用示例:selectdbo.Func_StrArrayStrOfIndex('8,9,4',',',2)返回值:9三、結(jié)合上邊兩個(gè)函數(shù),像數(shù)組一樣遍歷字符串中的元素(表值函數(shù))
1 create function Func_SplitStr(@SourceSql varchar(8000), @StrSePRate varchar(100)) 2 returns @temp table(F1 varchar(100)) 3 as 4 begin 5 declare @ch as varchar(100) 6 set @SourceSql=@SourceSql+@StrSeprate 7 while(@SourceSql<>'') 8 begin 9 set @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1) 10 insert @temp values(@ch) 11 set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'') 12 end 13 return 14 end15 go----調(diào)用select * from dbo.Func_SplitStr('1,2,3,4',',')--結(jié)果:1234
1 create function Func_SplitStr(@str nvarchar(2000),@split nvarchar(2)) 2 returns @t table(AccountCodeID int ) 3 as 4 begin 5 declare @tmpAccountCodeID int,@getIndex int 6 set @getIndex=charindex(',',@str) 7 while(@getIndex<>0) 8 begin 9 set @tmpAccountCodeID=convert(int,substring(@str,1,@getIndex-1))10 insert into @t(AccountCodeID) values (@tmpAccountCodeID)11 set @str=stuff(@str,1,@getIndex,'')12 set @getIndex=charindex(',',@str) 13 end14 insert into @t(AccountCodeID) values (@str)15 return 16 end17 go----調(diào)用select * from dbo.Func_SplitStr('1,2,3,4',',')--結(jié)果:1234新聞熱點(diǎn)
疑難解答
圖片精選