Oracle的 NULL 与 空字符串''

刚开始在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 字符类型的表现形式。

          


      



原文地址:https://www.cnblogs.com/ctypyb2002/p/9793185.html