考虑以下
Declare @t table(Val int, name varchar(100))
Insert into @t select 1,'name1'
union all select 1,'name2'
union all select 2,'name3'
union all select 3,'name4'
如果我想获得与 Val 1 或 2 有关的记录,则选择是 IN 子句。但是我们有一些条件,需要根据这些条件选择值。此后,我们将继续采用 CASE 方法,如下所示
declare @type int = 1
select *
from @t
where val = case when @type =1 then 1 end or
val = case when @type =1 then 2
end
它可以作为select * from @t where val in (1,2)正常工作(我们不能使用它,因为必须在运行时确定值,并且我们没有使用任何动态查询)。有没有其他方法可以模拟 IN 子句?
这只是为了知识。
谢谢