小编典典

SQL:我可以在where子句中否定条件吗?

sql

我想检查布尔值是否为真,然后在WHERE子句中确定要使用的条件。

假设布尔变量是@checkbool:

SELECT *
FROM TableA A
WHERE
    --if @checkbool is true, run this
    A.Id = 123

    --if @checkbool is false, run this
    A.Id <> 123

有否否定条件的方法?像在C ++中一样,您可以执行!(condition)。

如果不是,解决此问题的最佳方法是什么?

谢谢!


阅读 220

收藏
2021-03-23

共1个答案

小编典典

SQL!在C中的等效项是NOT。但是,在您的情况下,您还需要其他东西:您需要建立一个条件,该条件根据的值在两个选择之间做出决定@checkbool,如下所示:

SELECT *
FROM TableA A
WHERE (    (@checkbool) AND (A.Id =  123))
   OR ((NOT @checkbool) AND (A.Id <> 123))
2021-03-23