-- 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
时间: 2024-10-07 05:29:48