首页 > 解决方案 > 在 Oracle 中的 Select 查询中无法获取空查询结果

问题描述

我有以下查询,我正在尝试运行但未返回预期结果。Null in的ISIN字段值EXPORT_BB也被忽略,并且不显示NOT IN子句中给出的条件的结果。export_blacklist 只有一个行值,它不是 Null,但我仍然不知道 null 值被忽略的原因。

Select * from EXPORT_BB where ISIN NOT IN
    (
        SELECT
            ISIN
        FROM
            export_blacklist);

如果我只运行没有 NOT IN 子句的选择查询,那么我可以看到字段的值NULLISIN

只是为了测试,我尝试了以下查询,但也没有任何结果。是 Oracle 18c 中的错误还是缺少某些东西?

select 'null is not in set' from dual where null not in (select 1 from dual);

标签: sqloracleselectnull

解决方案


or子句中的NULLwith =<>、或 的任何比较都将返回,因此该行不包含在结果中(因为只有返回值所在的行才会包含在结果中)。 使用以下情况更改您的代码:<>INNOT INNULLTRUE
ISINNULL

SELECT * FROM EXPORT_BB 
WHERE ISIN NOT IN (SELECT ISIN FROM export_blacklist)
OR ISIN IS NULL

推荐阅读