Sql Server分割字符串函数

-- Description: 分割字符串函数
-- SELECT * FROM dbo.Split('a,b,c,d,e,f,g',',')
-- =============================================

CREATE FUNCTION [dbo].[Split] ( @Text VARCHAR(8000) , @Sign NVARCHAR(4000) )
    RETURNS @tempTable TABLE ( ID INT IDENTITY(1, 1) PRIMARY KEY , [TEMPVAL] VARCHAR(4000) ) 
    AS BEGIN DECLARE @StartIndex INT --开始查找的位置
 DECLARE @FindIndex INT --找到的位置
 DECLARE @Content VARCHAR(4000) --找到的值

SET @StartIndex = 1 --T-SQL中字符串的查找位置是从1开始的

SET @FindIndex = 0 --开始循环查找字符串逗号
 WHILE (@StartIndex <= LEN(@Text)) BEGIN --返回值是找到字符串的位置

SELECT @FindIndex = CHARINDEX(@Sign, @Text, @StartIndex) --判断有没找到 没找到返回0
 IF (@FindIndex = 0
     OR @FindIndex IS NULL ) BEGIN --如果没有找到者表示找完了

SET @FindIndex = LEN(@Text) + 1 END --初始化下次查找的位置
SET @Content = LTRIM(RTRIM(SUBSTRING(@Text, @StartIndex, @FindIndex - @StartIndex)))

SET @StartIndex = @FindIndex + 1 --把找的的值插入到要返回的Table类型中

INSERT INTO @tempTable ([TEMPVAL])
VALUES (@Content) END RETURN END
原文地址:https://www.cnblogs.com/NichkChang/p/4706221.html