Oracle对于Null的处理机制(oracle和null)

## Oracle对于Null的处理机制

Null是一个可以出现在Oracle数据库记录中的特殊值,用于表示该记录中没有有效值。

Oracle中NULL与0,空字符串和空格有很大的差别,前三者在SQL比较运算中都是有效值,而Null则具有特殊的处理机制。

Oracle 在比较中,将NULL默认处理为false,即null与任何数值比较记录结果都为false。同理,null与null的比较,结果也为false,即不相等(注:有的数据库结果处理为true,但oracle和MS SQLServer处理结果皆为false)。

例如,我们创建一个表DEMO,其中Id列为null:

CREATE TABLE DEMO
(ID NUMBER NULL);

如果将Id列比较值为5,结果为false,写成sql语句如下:

SELECT * FROM DEMO
WHERE ID = 5;

此外,对于对null的处理,Oracle还有一个特殊的运算符`IS NULL`,以检测相应的值是否为null,使用此运算符,以在逻辑为真时成功执行运算:

SELECT * FROM DEMO
WHERE ID IS NULL;

另外,Oracle还提供另一个用于处理Null的特殊函数`NVL`,可以将空值null转换为用户指定的值。这个函数可以用来替换null值,以避免可能出现的某些逻辑问题:

 SELECT NVL(ID 'NULL') from DEMO ;

总之,在Oracle数据库中,null具有特殊的处理机制,不会被SQL比较视为有效值,Oracle具备多种处理null的工具,这样可以使查询更自然,以及防止出现逻辑错误。


数据运维技术 » Oracle对于Null的处理机制(oracle和null)