刚开始在Oralce 数据库里写SQL时,null 和 空字符串'' 经常搞混淆,现在简单描述下这两种类型的区别与联系。
NULL
数据库的一种特殊数据类型,代表是未知的、不确定的,有无数种可能性。
NULL 只能通过 is null,is not null 判断。
NULL 与+、-、*、/ 运算事结果都是NULL,与字符串拼接时||,可以说视为''。
所以,列之间运算时需要使用nvl() 函数,这样才能保证结果的正确性。
select 'X' as c1,
null as c2,
null + 1 as c3,
null -1 as c4,
null *1 as c5,
null /1 as c6,
null||'a' as c7
from dual
空字符串‘’
数据库的 字符类型(varchar2 ),Oracle数据库是不存储这种值的。
空字符串'' 是NULL 字符类型的表现形式。
select *
from dual
where 1=1
and '' is null ;
’’和NULL有联系有区别,
对于NULL来说,表示了各种数据类型的NULL值。
对于空字符串’’来说,表现出了字符类型的特点,是NULL 字符类型的表现形式。