首页 > 代码库 > 分割字符串表值函数

分割字符串表值函数

实际工作中,我们通常会有这样的业务场景,需要把一大串字符串,用某个特定的字符串分割出来,生成一张表。一下方法就很好的解决了这个问题。

 1 IF EXISTS(SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID(fn_Split) AND XTYPE=FN) 2 BEGIN 3     DROP FUNCTION dbo.fn_Split 4 END 5 GO 6 --功    能:分割字符串表值函数 7 --参    数:@String 分割的字符串 8 --          @Delimiter 分隔符 9 --返 回 值:表10 --创 建 人:maojw11 --创建时间:2014-09-2412 CREATE FUNCTION [dbo].[fn_Split](  13  @String nvarchar (max),  14  @Delimiter nvarchar (10)  15 )  16 RETURNS @ValueTable TABLE ([Value] NVARCHAR(MAX),[id] int)  17 BEGIN  18  DECLARE @NextString nvarchar(MAX),  19   @Pos int,  20   @NextPos int,  21   @CommaCheck nvarchar(1),22     @id int23 24 set @id=1  25    26  SET @NextString = ‘‘  27  SET @CommaCheck = right(@String,1)   28    29  SET  @String = @String + @Delimiter  30    31   SET @Pos = CHARINDEX(@Delimiter,@String)  32   SET @NextPos = 1  33    34  WHILE (@pos <>  0)    35  BEGIN  36   SET @NextString = SUBSTRING(@String,1,@Pos - 1)  37     38   INSERT INTO @ValueTable ( [Value],[id]) VALUES (@NextString,@id)  39     40   SET @String = SUBSTRING(@String,@pos +1,LEN(@String))  41      42   SET @NextPos = @Pos  43   SET @pos  = CHARINDEX(@Delimiter,@String)  44 45     set @id = @id +146  END  47    48  RETURN  49 END  50 GO
View Code

 

分割字符串表值函数