使用SQL Server中的三元函数根据位确定NULL | NOT NULL



假设我有一个存储过程@flag 的输入参数

我想根据这个标志的值,根据某个列col1为null来筛选我的查询。

假设如果@flag = 1,则仅显示具有col1 IS NULL的记录,如果@flag = 0,则仅示出具有col1 IS NOT NULL 的记录

我的直觉会引导我这样做:

select * 
from table1 
where col1 IS IIF(@flag = 1, NULL, NOT NULL);

这是可编译的。还有其他简洁的方法吗?

即使在编译查询时,我也怀疑它是否有效。但您可以使用布尔and/or逻辑

select * from table1 
where (@flag = 1 and col1 IS NULL)
   or (@flag = 0 and col1 IS NOT NULL)

最新更新