sqlsever数据库 字段分割函数

Posted 铭毅小子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlsever数据库 字段分割函数相关的知识,希望对你有一定的参考价值。

USE [数据库]
GO
/****** Object: UserDefinedFunction [dbo].[f_splitSTR] Script Date: 05/18/2020 21:38:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create FUNCTION [dbo].[f_splitSTR](
@s varchar(8000), --待分拆的字符串
@split varchar(10) --数据分隔符
)RETURNS @re TABLE(
col varchar(max))
AS
BEGIN
DECLARE
@splitlen int

-- 取分隔符的长度, 在分隔符后面加一个字符是为了避免分隔符以空格结束时, 取不到正确的长度
SET @splitlen = LEN(@split + ‘a‘) - 2
-- 如果待分拆的字符串中存在数据分隔符, 则循环取出每个数据项
WHILE CHARINDEX(@split, @s)>0
BEGIN
-- 取第一个数据分隔符前的数据项
INSERT @re VALUES(LEFT(@s, CHARINDEX(@split, @s) - 1))

-- 将已经取出的第一个数据项和数据分隔符从待分拆的字符串中去掉
SET @s = STUFF(@s, 1, CHARINDEX(@split, @s) + @splitlen, ‘‘)
END

-- 保存最后一个数据项(最后一个数据项后面没有数据分隔符, 故在前面的循环中不会被处理)
INSERT @re VALUES(@s)
RETURN
end

以上是关于sqlsever数据库 字段分割函数的主要内容,如果未能解决你的问题,请参考以下文章

Power Query中数据分割函数详解(3)

C# sqlsever数据库 通过datatable更新数据问题

用SQL查询分析器查询时怎么把一个字段用“”分割成多个?

字段是多个值拼接的,怎么一一取出来

sqlsever数据库中查询与某一时间点最接近的记录

解决sqlsever 2014 复制结果到excel 多出行的问题