在 where 子句中使用集合 sql 时的布尔值

Posted

技术标签:

【中文标题】在 where 子句中使用集合 sql 时的布尔值【英文标题】:Boolean in case using sets sql in the where clause 【发布时间】:2013-01-11 21:36:24 【问题描述】:

我正在尝试在 where 中使用 Not In 和布尔变量来确定是否在集合中搜索某些东西。例如:

    Select
      BLAH
    FROM
      BLAH
    WHERE
      ...
      AND CASE WHEN @variable = 'false' THEN
           warningcode1 NOT IN (101,102,103)

【问题讨论】:

【参考方案1】:

试试这个

Select
      BLAH
    FROM
      BLAH
    WHERE
      ...
      AND (@variable <> 'false' OR warningcode1 NOT IN (101,102,103))

【讨论】:

【参考方案2】:

只需使用:

AND (@variable <> 'false' OR  warningcode1 NOT IN (101,102,103))

因此,警告代码1 仅在变量 = 'false' 时才重要,否则将被忽略。

【讨论】:

【参考方案3】:

用 if 试试这个

AND IF( @variable = 'false' , warningcode1 NOT IN (101,102,103) , warningcode1 IN (101,102,103) )

【讨论】:

以上是关于在 where 子句中使用集合 sql 时的布尔值的主要内容,如果未能解决你的问题,请参考以下文章

如何在光标的 select 语句 where 子句中传递逗号分隔值

删除 where 子句然后添加回来时的执行计划优化

使用 JOIN 时的 WHERE 子句与 ON

使用JPA在Sql中具有不同值的多个语句where子句

如何在 SQL Server where 子句中使用表值函数

where 子句中的 case 语句 - SQL Server