标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。