使用 where 子句查询检查具有多个值的变量

Query with where clause checking a variable with multiple values

场景: 我正在尝试创建一个查询,以便从 table 中检索多个值。直接列出值很简单,就像这样:

select * from product.text_data
where text_data.field_label = "Owner" or text_data.field_label = "Admin" or text_data.field_label = "Rule";

问题:是否可以执行相同的查询,而是将字段列表输入变量,然后直接检查变量?

例如:

set @idlist1 = ("Owner", "Admin", "Rule");
select * from product.text_data
where product.text_data.field_ref in @idlist1;

问题: 如果我尝试 运行 这个,我得到

SQL Error (1241): Operand should contain 1 column(s)

您缺少两个括号 ()

变量应该这样设置-

set @idlist1 = '("Owner","Admin","Rule")'

无法将列表定义为变量。您必须将变量声明为临时变量 table.

在您的用例中,您似乎在寻找动态 sql。

declare @myList varchar(100)
set @myList = '( "Owner", "Admin", "Rule" )'
exec('SELECT * FROM product.text_data WHERE product.text_data.field_ref IN' + @myList)