SQL Server 数据库字符串分割函数

SQL Server 数据库字符串分割函数,源代码如下:

ALTER FUNCTION [dbo].[f_split]
(	
	@SourceStr VARCHAR(MAX), -- 源字符串
	@SplitStr VARCHAR(100) -- 分割字符串
)
RETURNS @result TABLE (a VARCHAR(1000))
AS
BEGIN
	DECLARE @i INT
	SET @SourceStr = RTRIM(LTRIM(@SourceStr))
	SET @i = CHARINDEX(@SplitStr, @SourceStr)

	-- 循环处理字符串
	WHILE @i >= 1
	BEGIN
		-- 添加至结果数据表
		IF LEN(LEFT(@SourceStr, @i - 1)) > 0
		BEGIN
			INSERT INTO @result(a)
			VALUES (LEFT(@SourceStr, @i - 1))
		END

		-- 重新设置新数据
		SET @SourceStr = SUBSTRING(@SourceStr, @i + 1, LEN(@SourceStr)-@i)
		SET @i = CHARINDEX(@SplitStr, @SourceStr)

		-- 解决最后一个遗漏问题
		IF @i <= 0 AND LEN(@SourceStr) > 1
		BEGIN
			INSERT INTO @result(a)
			VALUES (@SourceStr)
		END
	END

	RETURN
END

调用方式:

DECLARE @SourceStr VARCHAR(MAX) = '+103+105+107-+3+'

SELECT *
FROM [MetaData].[dbo].f_split(@SourceStr, '+')

输出结果:

a
---
103
105
107-
3
posted @ 2022-08-22 15:19  张冠胜  阅读(530)  评论(0编辑  收藏  举报