将表达式存储在SQL中的变量中

时间:2014-07-18 14:19:53

标签: sql-server tsql

鉴于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存储在表(永久或临时)中,因为这会导致不必要的读取。

1 个答案:

答案 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