鉴于IN接受格式(subquery | expression [ ,...n ])
的参数,表达式是否可以存储在变量中以供重用?
例如(警告;这是设计的):
declare @expression ?expression_type?
declare @test int
set @expression = (44, 132, 133, 166, 167, 168, 169, 170)
set @test = 44
if @test in @expression begin
-- do something
end
if @test not in @expression begin
-- do something else
end
我试图通过不复制表达式来保持代码可维护性。但是,这个目标是一个可以多次调用的函数,因此我不想求助于将这些ID存储在表(永久或临时)中,因为这会导致不必要的读取。
答案 0 :(得分:5)
我认为表变量可以很好地处理它。
declare @expression table (value INT)
declare @test int
insert into @expression (value) values (44), (132), (133), (166), (167), (168), (169), (170)
set @test = 44
if @test in (select value from @expression) begin
-- do something
end
if @test not in (select value from @expression) begin
-- do something else
end