Sql Server分割字符串函数

时间:2022-09-08 21:13:59
-- 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