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这样的语
法,哪怕代码繁琐些。
不知道理解的是否真确,欢迎大家指正。