繁体   English   中英

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

[英]Query with where clause checking a variable with multiple values

场景:我正在尝试创建一个查询,我想从一个表中检索多个值。 通过直接列出值来做到这一点很简单,就像这样:

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)

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

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

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

您缺少两个括号中的''()

变量应像这样设置-

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM