从DUAL中选择DUMMY DUMMY不是空的;
结果:返回' X';
从DUAL中选择DUMMY DUMMY不在空的地方;
结果:什么都不返回。
答案 0 :(得分:1)
在Oracle中,二进制表达式可以评估为三种状态:TRUE
,FALSE
和NULL
,其中NULL
可以被认为与未定义或未知值相同。将二进制运算应用于NULL
值将提供NULL
输出(而不是像您预期的那样TRUE
或FALSE
):
Boolean Operation Result
----------------- ------
X = X TRUE
X = Y FALSE
X = NULL NULL
NULL = X NULL
NULL = NULL NULL
NULL IN ( NULL ) NULL
NOT TRUE FALSE
NOT FALSE TRUE
NOT NULL NULL
查询:
SELECT DUMMY FROM DUAL WHERE DUMMY NOT IN ( NULL )
相当于:
SELECT DUMMY FROM DUAL WHERE NOT( DUMMY = NULL )
WHERE
子句评估NOT( DUMMY = NULL )
到NOT NULL
,后者又评估为NULL
。由于WHERE
过滤器评估为非TRUE
值,因此排除该行。
IS NULL
操作专门用于测试某个值是否为NULL
,并且会执行您在平等=
运算符或IN
运算符所不同的位置。< / p>
所以:
Boolean Operation Result
----------------- ------
NULL = NULL NULL
NULL IN ( NULL ) NULL
NULL IS NULL TRUE
答案 1 :(得分:0)
NULL是一个特殊字符,不是零。它表示缺少真实数据(包括零和空格的数据)。