34,576
社区成员
发帖
与我相关
我的任务
分享
ALTER FUNCTION dbo.F_Split
(
@SplitString NVARCHAR(MAX), --源字符串
@Separator NVARCHAR(10) = ' ' --分隔符号,默认为空格
)
RETURNS @SplitStringsTable TABLE --输出的数据表
(
[id] INT IDENTITY(1, 1),
[value] NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @CurrentIndex INT;
DECLARE @NextIndex INT;
DECLARE @ReturnText NVARCHAR(MAX);
SELECT
@CurrentIndex = 1;
WHILE (@CurrentIndex <= LEN(@SplitString))
BEGIN
SELECT
@NextIndex = CHARINDEX(@Separator, @SplitString, @CurrentIndex);
IF (
@NextIndex = 0
OR @NextIndex IS NULL
)
SELECT
@NextIndex = LEN(@SplitString) + 1;
SELECT
@ReturnText = SUBSTRING(@SplitString, @CurrentIndex, @NextIndex - @CurrentIndex);
INSERT INTO @SplitStringsTable
(
[value]
)
VALUES
(
@ReturnText
);
SELECT
@CurrentIndex = @NextIndex + 1;
END;
RETURN;
END;
GO