SqlServer:根据指定分隔符,把传入字符串分隔处理后,返回数据表,函数功能类似.NET的string.Split()

时间:2022-05-01 22:12:40
-- =============================================
-- Author:        iKwok
-- Create date: 2013年3月21日
-- Description:    根据指定分隔符,把传入字符串分隔处理后,返回数据表, 函数功能类似.NET的string.Split()
-- =============================================
CREATE  FUNCTION [dbo].[f_Split](@text varchar(8000), @delimiter varchar(20) = ' ')

RETURNS @tbResult TABLE
(    
  id int IDENTITY PRIMARY KEY,
  value varchar(8000)   
)
AS
BEGIN

DECLARE @index int 
SET @index = -1 
WHILE (LEN(@text) > 0) 
  BEGIN  
    SET @index = CHARINDEX(@delimiter , @text)  
    IF (@index = 0) AND (LEN(@text) > 0)  
      BEGIN   
        INSERT INTO @tbResult VALUES (@text)
          BREAK  
      END  
    IF (@index > 1)  
      BEGIN   
        INSERT INTO @tbResult VALUES (LEFT(@text, @index - 1))   
        SET @text = RIGHT(@text, (LEN(@text) - @index))  
      END  
    ELSE 
      SET @text = RIGHT(@text, (LEN(@text) - @index)) 
    END

  RETURN

END

GO