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

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

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;
  8  /
bbbbbb

从以上可以看到,null和实际数值比较时,不论=或<>返回的都是false,即使前边加上not,返回的也是false.
所以将来写sql语句时,碰到使用null时,在不确定的情况下,尽量使用is 或 is not这样的语法,哪怕代码繁琐些。

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

你可能感兴趣的:(oracle sql语句中有关null使用的一点理解)