在SQL Server中使用三元函数来确定NULL |基于位的NOT NULL?

问题描述:

说我有一个输入参数的存储过程@flag在SQL Server中使用三元函数来确定NULL |基于位的NOT NULL?

我想基于一些列col1过滤我的查询为空,在此基础上标志的值。

说,如果@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)