如何在sql中使用not in()返回空列

3zwjbxry  于 2021-08-09  发布在  Java
关注(0)|答案(3)|浏览(252)

我想使用下面的查询返回一些数据。

select * 
from table 
where code_value not in ('44','45','46')

此语句返回除具有 code_value = null .
我想得到 null 列也可以。
我怎么能得到那个?

mwyxok5s

mwyxok5s1#

使用 IS NULL :

WHERE (code_value IS NULL OR code_value not in ('44','45','46'));
``` `NOT IN` 当与未知值或 `NULL` 价值观。
pjngdqdw

pjngdqdw2#

直接比较 NULL 是正确的解决方案。但我用这个来说明 IN . 更像是:

select t.*
from t
except
select t.*
from t
where code_value not in ('44', '45', '46');

not in . 这也不确切,因为 except 删除重复项。但逻辑上更接近于相反。

cotxawn7

cotxawn73#

我会用 isnull 与代码值中不存在的默认值结合使用;

select * 
from table 
where isnull(code_value,'<<non existing value>>') not in ('44','45','46')

相关问题