oracle的nvl函式的用法通過查詢獲得某個欄位的合計值,如果這個值位null將給出乙個預設的預設值
select nvl(sum(t.dwxhl),1) from tb_jhde t where zydm=-1
這裡關心的nvl的用法,nvl(arg,value)代表如果前面的arg的值為null那麼返回的值為後面的value
如: nvl(a,b)就是判斷a是否是null,如果不是返回a的值,如果是返回b的值 通過查詢獲得某個欄位的合計值,如果這個值位null將給出乙個預設的預設值
另乙個有關的有用方法
declare
i integer
select nvl(sum(t.dwxhl),1) into i from tb_jhde t where zydm=-1
這樣就可以把獲得的合計值儲存到變數i中,如果查詢的值為null就把它的值設定為預設的1
oracle下nvl函式 nvl( ) 函式 從兩個表示式返回乙個非 null 值。
語法 nvl(eexpression1, eexpression2)
引數 eexpression1, eexpression2
如 果 eexpression1 的計算結果為 null 值,則 nvl( ) 返回 eexpression2。如果 eexpression1 的計算結果不是 null 值,則返回 eexpression1。eexpression1 和 eexpression2 可以是任意一種資料型別。如果 eexpression1 與 eexpression2 的結果皆為 null 值,則 nvl( ) 返回 .null.。
返回值型別
字元型、日期型、日期時間型、數值型、貨幣型、邏輯型或 null 值
說明 在不支援 null 值或 null 值無關緊要的情況下,可以使用 nvl( ) 來移去計算或操作中的 null 值。 select nvl(a.name,'空得') as
name
from student a join school b on a.id=b.id 注意:兩個引數得型別要匹配 問:什麼是null? 答:在我們不知道具體有什麼資料的時候,也即未知,可以用null, 我們稱它為空,oracle中,含有空值的表列長度為零。
oracle允許任何一種資料型別的字段為空,除了以下兩種情況:
1、主鍵字段(primary
key),
2、定義時已經加了not
null限制條件的字段
說明:1、等價於沒有任何值、是未知數。
2、null與0、空字串、空格都不同。
3、對空值做加、減、乘、除等運算操作,結果仍為空。
4、null的處理使用nvl函式。
5、比較時使用關鍵字用「is
null」和「is
notnull」。
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
isnull; 1 ---------
1 sql> 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
notnull;
現有乙個商品銷售表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值為空)
sql> select * from sale where sell like
'%';
month sell
------
----------
200001 1000
200002 1100
200003 1200
200004 1300
200005 1400
200006 1500
200007 1600
200101 1100
200202 1200
200301 1300
200008 1000
11 rows selected.
查詢到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 1000
200002 1100
200003 1200
200004 1300
200005 1400
200006 1500
200007 1600
200101 1100
200202 1200
200301 1300
200008 1000
month sell
------
----------
200009
12 rows selected.
oracle的空值就是這麼的用法,我們最好熟悉它的約定,以防查出的結果不正確
Oracle Nvl 函式用法
oracle nvl 函式用法 文章分類 資料庫 nvl 函式 從兩個表示式返回乙個非 null 值。語法 nvl eexpression1,eexpression2 引數 eexpression1,eexpression2 如果 eexpression1 的計算結果為 null 值,則 nvl 返...
oracle NVL與Coalesce的區別
先來說一下用法上的區別 nvl commission pct,0 如果第乙個引數為null,則返回第二個引數 如果第乙個引數為非null,則返回第乙個引數 coalesce expr1,expr2,expr3.exprn 從左往右數,遇到第乙個非null值,則返回該非null值。多層判斷 第一點區別...
函式的用法 INDEXC函式的用法
1 製作小 箱 如何利用excel製作簡單的小 箱?這裡與大家分享借用index函式來實現。在單元格中輸入公式 index a2 a17,randbetween 2,counta a2 a17 公式說明 counta函式表示統計非空單元格格式 randbetween函式表示隨機生成整數 2 隔行提取...