首页 > 代码库 > SQL中的null值

SQL中的null值

 1.  包含null的表达式都为null

 2.  null永远!=null

 3.  如果集合中含有null,不能使用not in; 但可以使用in

示例如下:

SQL> /*
SQL> SQL中的null值:
SQL> 1. 包含null的表达式都为null
SQL> 2. null永远!=null
SQL> */
SQL> select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0)
  2  from emp;

     EMPNO ENAME      SAL     SAL*12       COMM SAL*12+NVL(COMM,0)                                                                                    
---------- -------- ----- ---------- ---------- ------------------                                                                                    
      7369 SMITH      800       9600                          9600                                                                                    
      7499 ALLEN     1600      19200        300              19500                                                                                    
      7521 WARD      1250      15000        500              15500                                                                                    
      7566 JONES     2975      35700                         35700                                                                                    
      7654 MARTIN    1250      15000       1400              16400                                                                                    
      7698 BLAKE     2850      34200                         34200                                                                                    
      7782 CLARK     2450      29400                         29400                                                                                    
      7788 SCOTT     3000      36000                         36000                                                                                    
      7839 KING      5000      60000                         60000                                                                                    
      7844 TURNER    1500      18000          0              18000                                                                                    
      7876 ADAMS     1100      13200                         13200



SQL> --2. null永远!=null
SQL> --查询奖金为null的员工
SQL> select *
  2  from emp
  3  where comm=null;

未选定行

SQL> select *
  2  from emp
  3  where comm is null;

     EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                   
---------- -------- --------- ---------- -------------- ----- ---------- ----------                                                                   
      7369 SMITH    CLERK           7902 17-12月-80       800                    20                                                                   
      7566 JONES    MANAGER         7839 02-4月 -81      2975                    20                                                                   
      7698 BLAKE    MANAGER         7839 01-5月 -81      2850                    30                                                                   
      7782 CLARK    MANAGER         7839 09-6月 -81      2450                    10                                                                   
      7788 SCOTT    ANALYST         7566 19-4月 -87      3000                    20                                                                   
      7839 KING     PRESIDENT            17-11月-81      5000                    10                                                                   
      7876 ADAMS    CLERK           7788 23-5月 -87      1100                    20                                                                   
      7900 JAMES    CLERK           7698 03-12月-81       950                    30                                                                   
      7902 FORD     ANALYST         7566 03-12月-81      3000                    20                                                                   
      7934 MILLER   CLERK           7782 23-1月 -82      1300                    10                                                                   

已选择 10 行。

 

 

 

 

SQL> --null 值 3. 如果集合中含有null,不能使用not in; 但可以使用in
SQL> ed
已写入 file afiedt.buf

  1  select *
  2  from emp
  3* where deptno not in (10,20,null)
SQL> /

未选定行

SQL> ed
已写入 file afiedt.buf

  1  select *
  2  from emp
  3* where deptno in (10,20,null)
SQL> /

     EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                   
---------- -------- --------- ---------- -------------- ----- ---------- ----------                                                                   
      7369 SMITH    CLERK           7902 17-12月-80       800                    20                                                                   
      7566 JONES    MANAGER         7839 02-4月 -81      2975                    20                                                                   
      7782 CLARK    MANAGER         7839 09-6月 -81      2450                    10                                                                   
      7788 SCOTT    ANALYST         7566 19-4月 -87      3000                    20                                                                   
      7839 KING     PRESIDENT            17-11月-81      5000                    10                                                                   
      7876 ADAMS    CLERK           7788 23-5月 -87      1100                    20                                                                   
      7902 FORD     ANALYST         7566 03-12月-81      3000                    20                                                                   
      7934 MILLER   CLERK           7782 23-1月 -82      1300                    10                                                                   

已选择 8 行。

 

SQL中的null值