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++中一样,你可以做到!(条件).
如果没有,解决这个问题的最佳方法是什么?
谢谢!
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)