数据库
首页 > 数据库> > SQL Server 数据库字符串分割函数

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

标签:BEGIN,SET,VARCHAR,--,数据库,Server,END,SQL,SourceStr
来源: https://www.cnblogs.com/zhang-guansheng/p/16612916.html