发布网友 发布时间:2022-04-08 04:25
共3个回答
懂视网 时间:2022-04-08 08:47
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
sqlserver几个好用的表值函数和标量函数
标签:
热心网友 时间:2022-04-08 05:55
标量值函数里面只能返回单个类型的值,你下面的那个SELECT出来是一个数据集,是不能直接在标量值函数里用的热心网友 时间:2022-04-08 07:13
count()