在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)
假设我有一个存储过程的输入参数@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)