标签:
获取逗号风格的字符串中的某一个
比如‘1,2,4,5,6‘ 第三个就是4
CREATE function [dbo].[Get_StrArrayStrOfIndex] ( @str nvarchar(max), --要分割的字符串 @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 --这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。 return substring(@str,@start,@location-@start) end GO
获取逗号分隔的字符串的个数
CREATE function [dbo].[Get_StrArrayLength] ( @str nvarchar(max), --要分割的字符串 @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 GO
按照某个符号分割字符串 翻来一张表
CREATE FUNCTION [dbo].[SplitStringToTable] ( @String nvarchar(4000), --格式如:“1,2,3,4,” @SplitChar nvarchar(10) --分割的字符:“,” ) RETURNS @table Table(ID varchar(100)) AS BEGIN DECLARE @Index INT SET @Index = 0 IF @String <> ‘‘ Begin IF RIGHT(@String,1)<> @SplitChar SET @String = @String + @SplitChar IF LEFT(@String,1)= @SplitChar SET @String = STUFF(@String, 1, 1, ‘‘) End WHILE CHARINDEX(@SplitChar,@String,@Index) > 0 BEGIN INSERT INTO @table(ID) VALUES (SUBSTRING(@String, @Index, CHARINDEX(@SplitChar, @String, @Index) - @Index)) SET @index = CHARINDEX(@SplitChar, @String, @Index) + 1 END RETURN END GO
标签:
原文地址:http://www.cnblogs.com/maijin/p/4675927.html