【问题标题】:SQL Server 2008 Dynamic Where ClauseSQL Server 2008 动态 Where 子句
【发布时间】:2014-03-30 01:55:56
【问题描述】:

是否可以根据列的值使用动态 where 子句?我可以使用 case 语句,但我需要返回多个值。伪代码如下

例如

SELECT * FROM PRODUCTS
CASE
    WHEN Location = 'Vegas'
    THEN 'WHERE FOO IN ('1','2','3')'
ELSE
    WHEN Location = 'Juneau'
    THEN 'WHERE FOO IN ('4','5','6')'
END
AND BUZZ = '1'

【问题讨论】:

  • 您的表格是什么样的,您希望输出是什么样的?
  • 字段:位置、foo、嘶嘶声、嗡嗡声、价格。例如,选择所有价格:如果 Vegas 则 foo 在 (1,2,3) 中,或者如果 Juneau 则 foo 在 (4,5,6) 中,否则什么都没有
  • 因此,您希望根据 Location AND Foo 的某些值获得结果。第一个答案表明了这一点。

标签: sql-server dynamic where-clause


【解决方案1】:

使用布尔逻辑:

SELECT * FROM PRODUCTS
where (
 (Location = 'Vegas' and FOO IN ('1','2','3')) or
 (Location = 'Juneau' and FOO IN ('4','5','6'))
)
AND BUZZ = '1'

【讨论】:

  • 感谢 blorgbeard,这是有道理的。我会对其进行测试以确保它有效,如果我没有任何其他问题,请将其标记为答案
猜你喜欢
  • 2010-09-13
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
相关资源
最近更新 更多