SqlServer中使⽤特定字符分割字符串
在T-SQL中我们经常批量操作时都会对字符串进⾏拆分,可是SQL Server中却没有⾃带Split函数,所以要⾃⼰来实现了。这⾥将字符串分割以table形式输出
语法如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
create by shuke.li 2020-9-15
*/
create function[dbo].[SplitString]
(
@Input nvarchar(max), --input string to be separated
@Separator nvarchar(max)=',', --a string that delimit the substrings in the input string
@RemoveEmptyEntries bit=1--the return value does not include array elements that contain an empty string
)
returns@TABLE table
(
字符串截取 sql
[Id]int identity(1,1),
[Value]nvarchar(max)
)
as
begin
declare@Index int, @Entry nvarchar(max)
set@Index=charindex(@Separator,@Input)
while (@Index>0)
begin
set@Entry=ltrim(rtrim(substring(@Input, 1, @Index-1)))
if (@RemoveEmptyEntries=0) or (@RemoveEmptyEntries=1and@Entry<>'')
begin
insert into@TABLE([Value]) Values(@Entry)
end
set@Input=substring(@Input, @Index+datalength(@Separator)/2, len(@Input))
set@Index=charindex(@Separator, @Input)
end
set@Entry=ltrim(rtrim(@Input))
if (@RemoveEmptyEntries=0) or (@RemoveEmptyEntries=1and@Entry<>'')
begin
insert into@TABLE([Value]) Values(@Entry)
end
return
end
只要在新建查询⾥执⾏上⾯的代码,即完成了split函数的建⽴。
下⾯来测试这⼀函数的功能,测试所使⽤的的SQL脚本如下:
declare@str1varchar(max)
set@str1='CFER-3345-3323,CFER-0023-2299,CFER-0023-6677,CFER-0023-7678,CFER-4565-2299,CFER-0023-6678'
select*from[dbo].[SplitString](@str1, ',', 0)
结果显⽰如下图所⽰:
最终使⽤⽅法和c#中的split函数是不是很相似!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。