在SQL服务器中使用三元函数来确定NULL | NOT NULL 基于位?

Use Ternary function in SQL Server to determine NULL | NOT NULL based on bit?

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

我想根据此标志的值,根据某些列 col1 为空来过滤我的查询。

如果@flag = 1,只显示col1 IS NULL的记录,如果@flag = 0,只显示col1 IS NOT NULL

的记录

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

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

这确实编译。还有其他简洁的方法吗?

即使您的查询可以编译,我也怀疑它是否会起作用。但是你可以用 boolean and/or logic

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