程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據庫中null的具體使用方案

Oracle數據庫中null的具體使用方案

編輯:Oracle數據庫基礎

你是否對Oracle數據庫中null的實際操作感到十分頭疼?如果是這樣子的話,以下的文章將會給你相應的解決方案,以下的文章主要是介紹Oracle數據庫中null的具體使用的方案,以下就是相關內容的具體描述。

問:什麼是NULL?

答:在我們不知道具體有什麼數據的時候,也即未知,可以用NULL,

我們稱它為空,Oracle數據庫中,含有空值的表列長度為零。

Oracle允許任何一種數據類型的字段為空,除了以下兩種情況:

1、主鍵字段(primary key),

2、定義時已經加了NOT NULL限制條件的字段

說明:

1、等價於沒有任何值、是未知數。

2、NULL與0、空字符串、空格都不同。

3、對空值做加、減、乘、除等運算操作,結果仍為空。

4、NULL的處理使用NVL函數。

5、比較時使用關鍵字用“is null”和“is not null”。

6、空值不能被索引,所以查詢時有些符合條件的數據可能查不出來,

count(*)中,用nvl(列名,0)處理後再查。

7、排序時比其他數據都大(索引默認是降序排列,小→大),

所以NULL值總是排在最後。

使用方法:

  1. SQL> select 1 from dual where nullnull=null; 

沒有查到記錄

  1. SQL> select 1 from dual where null=''

沒有查到記錄

  1. SQL> select 1 from dual where ''=''; 

沒有查到記錄

SQL> select 1 from dual where null is null;
1
---------
1
SQL> select 1 from dual where nvl(null,0)=nvl(null,0);
1
---------
1
 

對空值做加、減、乘、除等運算操作,結果仍為空。

  1. SQL> select 1+null from dual;  
  2. SQL> select 1-null from dual;  
  3. SQL> select 1*null from dual;  
  4. SQL> select 1/null from dual; 

查詢到一個記錄。

注:這個記錄就是SQL語句中的那個null

設置某些列為空值

update table1 set 列1=NULL where 列1 is not null;

現有一個商品銷售表sale,表結構為:

month  char(6)  ——月份

sellnumber(10,2) ——月銷售金額

  1. create table sale (month char(6),sell number);  
  2. insert into sale values('200001',1000);  
  3. insert into sale values('200002',1100);  
  4. insert into sale values('200003',1200);  
  5. insert into sale values('200004',1300);  
  6. insert into sale values('200005',1400);  
  7. insert into sale values('200006',1500);  
  8. insert into sale values('200007',1600);  
  9. insert into sale values('200101',1100);  
  10. insert into sale values('200202',1200);  
  11. insert into sale values('200301',1300);  
  12. insert into sale values('200008',1000);  
  13. insert into sale(month) values('200009'); 

注意:這條記錄的sell值為空

  1. commit; 

共輸入12條記錄

  1. SQL> select * from sale where sell like '%';  
  2. MONTH SELL  
  3. ------ ---------  
  4. 200001 1000  
  5. 200002 1100  
  6. 200003 1200  
  7. 200004 1300  
  8. 200005 1400  
  9. 200006 1500  
  10. 200007 1600  
  11. 200101 1100  
  12. 200202 1200  
  13. 200301 1300  
  14. 200008 1000 

查詢到11記錄。

結果說明:

查詢結果說明此SQL語句查詢不出列值為NULL的字段

此時需對字段為NULL的情況另外處理。

  1. SQL> select * from sale where sell like '%' or sell is null;  
  2. SQL> select * from sale where nvl(sell,0) like '%';  
  3. MONTH SELL  
  4. ------ ---------  
  5. 200001 1000  
  6. 200002 1100  
  7. 200003 1200  
  8. 200004 1300  
  9. 200005 1400  
  10. 200006 1500  
  11. 200007 1600  
  12. 200101 1100  
  13. 200202 1200  
  14. 200301 1300  
  15. 200008 1000  
  16. 200009 

查詢到12記錄。

Oracle數據庫的空值就是這麼的用法,我們最好熟悉它的約定,以防查出的結果不正確。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved