Advertisement

SQL Server字符串切割函数

阅读量:

SQL Server中把一个字符串切割成多个数据函数

复制代码
 CREATE FUNCTION SplitStringToTable

    
     (
    
       in Input VARCHAR(MAX(VARCHAR)) ,  -- 输入切割的字符串 
    
       in Separator VARCHAR(MAX(VARCHAR)) = ','  -- 切割标识 
    
     )
    
 RETURNS out TABLE TABLE
    
     (
    
       Id INT IDENTITY(1, 1) , -- 返回一个表有id,value
    
       result VARCHAR(MAX)
    
     )
    
 AS 
    
     BEGIN 
    
 		    DECLARE @RemoveEmptyEntries BIT = 1 
    
     DECLARE @Index INT ,
    
         @Entry VARCHAR(MAX) 
    
     SET @Index = CHARINDEX(@Separator, @Input) 
    
     WHILE ( @Index > 0 ) 
    
         BEGIN 
    
             SET @Entry = LTRIM(RTRIM(SUBSTRING(@Input, 1, @Index - 1))) 
    
             IF ( @RemoveEmptyEntries = 0 )
    
                 OR ( @RemoveEmptyEntries = 1
    
                      AND @Entry <> ''
    
                    ) 
    
                 BEGIN 
    
                     INSERT  INTO @TABLE
    
                             ( [Value] )
    
                     VALUES  ( @Entry ) 
    
                 END 
    
             SET @Input = SUBSTRING(@Input,
    
                                    @Index + DATALENGTH(@Separator) / 2,
    
                                    LEN(@Input)) 
    
             SET @Index = CHARINDEX(@Separator, @Input) 
    
         END 
    
     SET @Entry = LTRIM(RTRIM(@Input)) 
    
     IF ( @RemoveEmptyEntries = 0 )
    
         OR ( @RemoveEmptyEntries = 1
    
              AND @Entry <> ''
    
            ) 
    
         BEGIN 
    
             INSERT  INTO @TABLE
    
                     ( [Value] )
    
             VALUES  ( @Entry ) 
    
         END 
    
     RETURN 
    
     END

函数调用

select * from SplitStringToTable('AB/C/ASE','/')

全部评论 (0)

还没有任何评论哟~