在中,不在中表示oracle中的空值

在中,不在中表示oracle中的空值,oracle,notin,Oracle,Notin,在oracle中,为什么“不在”不适用于空值,而“在”适用于空值 例如 第一个语句将给出输出=2,6,8 第二条语句不会给出任何输出 有人能解释一下原因吗?不在中基本上是这样工作的: col NOT IN (value_a, value_b, value_c) -- is the same as col != value_a && col != value_b && col != value_c 如果其中一个值为null,则整个表达式的计算结果为null,而不是

在oracle中,为什么“不在”不适用于空值,而“在”适用于空值 例如

第一个语句将给出输出=2,6,8 第二条语句不会给出任何输出


有人能解释一下原因吗?

不在
中基本上是这样工作的:

col NOT IN (value_a, value_b, value_c)
-- is the same as
col != value_a && col != value_b && col != value_c
如果其中一个值为
null
,则整个表达式的计算结果为
null
,而不是
true
(这可能是您所期望的)


您可以在此处了解更多信息:

它可以正常工作。你期望的结果是什么?重复的
col NOT IN (value_a, value_b, value_c)
-- is the same as
col != value_a && col != value_b && col != value_c