使用 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)
场景: 我正在尝试创建一个查询,以便从 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)