在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)