linux+oracle账号解锁oracle sql语句中有关null使用的一点理解

oracle sql语句中有关null使用的一点理解

 

最近在写pl/sql package时,发现了原来使用null时的一些问题, 下面是我的理解,可能有不对
的地方,欢迎大家指正。

  www.2cto.com  

SQL> set serveroutput on

SQL> begin

  2    if null <> 1 then

  3      dbms_output.put_line('aaaaaa');

  4    else

  5      dbms_output.put_line('bbbbbb');

  6    end if;

  7  end;

  8  /

bbbbbb

 

SQL> begin

  2    if not null <> 1 then

  3      dbms_output.put_line('aaaaaa');

  4    else

  5      dbms_output.put_line('bbbbbb');

  6    end if;

  7  end;

&nboracle账号sp; 8  /

bbbbbb

 

从以上可以看到,null和实际数值比较时,不论=或<>返回的都是false,即使前边加上not,
返回的也是false.

所以将来写sql语句时,碰到使用null时,在不确定的情况下,尽量使用is 或 is not这样的语
法,哪怕代码繁琐些。

 

不知道理解的是否真确,欢迎大家指正。

 

此条目发表在oracle metalink账号分类目录,贴了标签。将固定链接加入收藏夹。