Oracle中DECODE函式的應用

2021-06-18 00:49:09 字數 2235 閱讀 8462

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 預設值...