數據庫空值(Null)小結


1.定義空(Null)值

空值是一個不可用的,沒有被分配的, 或者不能得到的值.空值不同於零或者空格.

 

2.在算術表達式中的空值

在算術表達式中,與空值運算的結果為空。
SQL> ed
已寫入 file afiedt.buf
  1  SELECT last_name,12* salary, 12*salary*(1+commission_pct)
  2* FROM   employees
SQL> /
如果commission_pct列有空值,則即使salary不可能是空,但是12*salary*(1+commission_pct)也是一個空值
解決方法:使用nvl(可能有空值的列,如果是空值用什么值代替)
SQL> ed
已寫入 file afiedt.buf
  1  SELECT last_name,12*salary,12*salary*(1+nvl(commission_pct,0))
  2* FROM   employees
SQL> /

 

3.使用IS NULL運算符

SQL> select last_name,manager_id from employees
  2  where manager_id is null;

 

4.空值也會帶來一些算法的改變,會使快速索引訪問失效

Employees表的manager_id列建有索引
SQL> set autotrace trace exp
SQL> select last_name,manager_id from employees
  2  where manager_id =201;

在下面的語句中,沒有使用索引,設想全國有13億人,manager_id的領導很少,去找的時候不用索引,可想而知這個查詢多么花費時間,解決方法是在空值的地方,放一個區別於正常數據的值
SQL> select last_name,manager_id from employees
  2  where manager_id is null;

 

5.NVL函數
用法:NVL(可能有空值的列,如果是空值用什么值代替). 數據類型可以是日期、字符、或者數字. 數據類型必須匹配:例如
NVL(commission_pct,0)
NVL(hire_date,'01-JAN-97')
NVL(job_id,'No Job Yet')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM