ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2022-08-22 15:34:06  阅读:233  来源: 互联网

标签:BEGIN SET VARCHAR -- 数据库 Server END SQL SourceStr


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有