zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

SQL里面用自定义Split()完成个性化需求

SQL 自定义 完成 需求 里面 个性化 split
2023-06-13 09:14:46 时间
复制代码代码如下:

SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
CREATEfunction[dbo].[SplitString]
(
@Inputnvarchar(max),
@Separatornvarchar(max)=",",
@RemoveEmptyEntriesbit=1
)
returns@TABLEtable
(
[Id]intidentity(1,1),
[Value]nvarchar(max)
)
as
begin
declare@Indexint,@Entrynvarchar(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
insertinto@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
insertinto@TABLE([Value])Values(@Entry)
end
return
end

函数、表都建好了,下面调用测试一下吧:
复制代码代码如下:

declare@str1varchar(max),@str2varchar(max),@str3varchar(max)
set@str1="1,2,3"
set@str2="1###2###3"
set@str3="1###2###3###"
select[Value]from[dbo].[SplitString](@str1,",",1)
select[Value]from[dbo].[SplitString](@str2,"###",1)
select[Value]from[dbo].[SplitString](@str3,"###",0)

结果,截个图来看一下: