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

Lok*_*Lok 5 sql where-clause conditional-statements

我想检查布尔值是否为真,然后在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
Run Code Online (Sandbox Code Playgroud)

有没有办法否定一个条件?就像在C++中一样,你可以做到!(条件).

如果没有,解决这个问题的最佳方法是什么?

谢谢!

das*_*ght 5

SQL !在C中的等价物是NOT.但是,在您的情况下,您需要其他东西:您需要构建一个条件,根据值的两个选择来决定@checkbool,如下所示:

SELECT *
FROM TableA A
WHERE (    (@checkbool) AND (A.Id =  123))
   OR ((NOT @checkbool) AND (A.Id <> 123))
Run Code Online (Sandbox Code Playgroud)