問:什麼是NULL?答:在我們不知道具體有什麼資料的時候,也即未知,可以用NULL, 我們稱它為空白,ORACLE中,含有空值的表列長度為零。ORACLE允許任何一種資料類型的欄位為空白,除了以下兩種情況:1、主鍵欄位primary key),2、定義時已經加了NOT NULL限制條件的欄位說明:1、等價於沒有任何值、是未知數。2、NULL與0、Null 字元串、空格都不同。3、對空值做加、減、乘、除等運算操作,結果仍為空白。4、NULL的處理使用NVL函數。5、比較時使用關鍵字用“is null”和“is not null”。6、空值不能被索引,所以查詢時有些合格資料可能查不出來, count(*)中,用nvl(列名,0)處理後再查。7、排序時比其他資料都大索引預設是降序排列,小→大), 所以NULL值總是排在最後。使用方法:SQL> select 1 from dual where null=null;沒有查到記錄SQL> select 1 from dual where null='';沒有查到記錄SQL> select 1 from dual where ''='';沒有查到記錄SQL> select 1 from dual where null is null; 1--------- 1SQL> select 1 from dual where nvl(null,0)=nvl(null,0); 1--------- 1對空值做加、減、乘、除等運算操作,結果仍為空白。SQL> select 1+null from dual;SQL> select 1-null from dual;SQL> select 1*null from dual;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) --月銷售金額create table sale (month char(6),sell number);insert into sale values('200001',1000);insert into sale values('200002',1100);insert into sale values('200003',1200);insert into sale values('200004',1300);insert into sale values('200005',1400);insert into sale values('200006',1500);insert into sale values('200007',1600);insert into sale values('200101',1100);insert into sale values('200202',1200);insert into sale values('200301',1300);insert into sale values('200008',1000);insert into sale(month) values('200009'); 注意:這條記錄的sell值為空白)commit;共輸入12條記錄SQL> select * from sale where sell like '%';MONTH SELL------ ---------200001 1000200002 1100200003 1200200004 1300200005 1400200006 1500200007 1600200101 1100200202 1200200301 1300200008 1000 查詢到11記錄. 結果說明:查詢結果說明此SQL語句查詢不出列值為NULL的欄位此時需對欄位為NULL的情況另外處理。SQL> select * from sale where sell like '%' or sell is null;SQL> select * from sale where nvl(sell,0) like '%'; MONTH SELL------ ---------200001 1000200002 1100200003 1200200004 1300200005 1400200006 1500200007 1600200101 1100200202 1200200301 1300200008 1000200009 查詢到12記錄. Oracle的空值就是這麼的用法,我們最好熟悉它的約定,以防查出的結果不正確