decode函式相當於一條件語句(if).它將輸入數值與函式中的引數列表相比較,根據輸入值返回乙個對應值。
函式的引數列表是由若干數值及其對應結果值組成的若干序偶形式。當然,如果未能與任何乙個實參序偶匹配成功,則函式也有預設的返回值。
區別於sql的其它函式,decode函式還能識別和操作空值.
其具體的語法格式如下:
decode(input_value,value,result[,value,result…][,default_result]);
其中:input_value 試圖處理的數值。decode函式將該數值與一系列的序偶相比較,以決定最後的返回結果
value 是一組成序偶的數值。如果輸入數值與之匹配成功,則相應的結果將被返回。對應乙個空的返回值,可以使用關鍵字null於之對應
result 是一組成序偶的結果值
default_result 未能與任何一序偶匹配成功時,函式返回的預設值
舉例說明:
現定義一table名為output,其中定義兩個column分別為monthid(var型)和sale(number型),若sale值=1000時翻譯為d,=2000時翻譯為c,
=3000時翻譯為b,=4000時翻譯為a,如是其他值則翻譯為other;
sql如下:
select monthid , decode (sale,1000,'d',2000,'c',3000,'b',4000,'a',』other』) sale from output
特殊情況:
若只與乙個值進行比較
select monthid ,decode(sale, null,『---』,sale) sale from output
另:decode中可使用其他函式,如nvl函式或sign()函式等;
nvl(expr1,expr2)
若expr1是null,則返回expr2,否則返回expr1.
如果用到decode函式中就是
select monthid,decode(nvl(sale,6000),6000,'ng','ok') from output
sign()函式根據某個值是0、正數還是負數,分別返回0、1、-1,
如果取較小值就是
select monthid,decode(sign(sale-6000),-1,sale,6000) from output,即達到取較小值的目的。
(decode函式相當於一條件語句(if).它將輸入數值與函式中的引數列表相比較,
根據輸入值返回乙個對應值。)
使用decode函式可以避免重複掃瞄相同記實或重複連線相同的表.
使用decode函式可以避免重複掃瞄相同記錄或重複連線相同的表. 例如:
sql**
select count (*), sum (sal) from emp where dept_no = 0020 and ename like 『smith%』;
select count (*), sum (sal) from emp where dept_no = 0030 and ename like 『smith%』;
你可以用decode函式高效地得到相同結果:
sql**
select count (decode(dept_no,0020,』x』, null )) d0020_count,
count (decode(dept_no,0030,』x』, null )) d0030_count,
sum (decode(dept_no,0020,sal, null )) d0020_sal,
sum (decode(dept_no,0030,sal, null )) d0030_sal
from emp where ename like 『smith%』;
類似的,decode函式也可以運用於group by 和order by子句中.
select g.po_id,
g.prod_id,
g.unit_id,
g.po_schd_date,
sum(po_qty) po_qty,
sum(decode(g.po_stat_cd, '90', g.po_qty, 0)) move_qty
from tb_po_dtl g
where g.po_stat_cd in ('30', '90')
group by g.po_id, g.prod_id, g.unit_id, g.po_schd_date
Oracle 中 decode 函式用法
含 釋 decode 條件,值1,返回值1,值2,返回值2,值n,返回值n,預設值 該函式的含義如下 if 條件 值1 then return 翻譯值1 elsif 條件 值2 then return 翻譯值2 elsif 條件 值n then return 翻譯值n else return 預設值...
Oracle 中 decode 函式用法
含 釋 decode 條件,值1,返回值1,值2,返回值2,值n,返回值n,預設值 該函式的含義如下 if 條件 值1 then return 翻譯值1 elsif 條件 值2 then return 翻譯值2 elsif 條件 值n then return 翻譯值n else return 預設值...
Oracle 中 decode 函式用法
含 釋 decode 條件,值1,返回值1,值2,返回值2,值n,返回值n,預設值 該函式的含義如下 if 條件 值1 then return 翻譯值1 elsif 條件 值2 then return 翻譯值2 elsif 條件 值n then return 翻譯值n else return 預設值...