需求
传入字符串A,B,C,D,E
到SQL做 字段 in (A,B,C,D,E) 的时候,因为是字符串需要变成'A','B','C','D','E'
这样处理很麻烦
然后在SQL里面创建一个表值函数
USE [ZemtProcess]
GO
/****** Object: UserDefinedFunction [dbo].[f_split] Script Date: 06/06/2017 15:53:08 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER function [dbo].[f_split](@c nvarchar(2000),@split Nvarchar(2))
returns @t table(ID int,colName Nvarchar(50))
as
begin
declare @i int
set @i=1
while(charindex(@split,@c)<>0)
begin
insert @t(ID,colName) values (@i,substring(@c,1,charindex(@split,@c)-1))
set @c = stuff(@c,1,charindex(@split,@c),'')
set @i=@i+1
end
insert @t(ID,colName) values (@i,@c)
return
end
使用的时候 select * from [dbo].[f_split]('A,B,C,D,E',',')
执行下输出结果就和查询表结果一样
ID colName
1 A
2 B
最终SQL
字段 in (select colName from [dbo].[f_split]('A,B,C,D,E',',')