假设我有一个存储过程@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)