1. 程式人生 > >decode函式的作用 decode和case when用法對比

decode函式的作用 decode和case when用法對比

學習分享必看:javacto.taobao.com

例子

如Table表有性別欄位,1代表男2代表女、3代表中性、還有沒填就代表未說明
select id,decode(sex,'1','男','2','女','3','中性','未說明') from Table;
select id,
    case when sex='1' then '男'
    when sex='2' then '女'
    when sex='3' when '中性'
    else '未說明' end sex
from table;

 

DECODE函式是ORACLE PL/SQL是功能強大的函式之一,目前還只有ORACLE公司的SQL提供了此函式,其他資料庫廠商的SQL實現還沒有此功能。DECODE有什麼用途呢? 先構造一個例子,假設我們想給智星職員加工資,其標準是:工資在8000元以下的將加20%;工資在8000元以上的加15%,通常的做法是,先選出記錄中的工資欄位值? select salary into var-salary from employee,然後對變數var-salary用if-then-else或choose case之類的流控制語句進行判斷。 如果用DECODE函式,那麼我們就可以把這些流控制語句省略,通過SQL語句就可以直接完成。如下:select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary) from employee 是不是很簡潔? DECODE的語法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等於if1時,DECODE函式的結果返回then1,...,如果不等於任何一個if值,則返回else。初看一下,DECODE 只能做等於測試,但剛才也看到了,我們通過一些函式或計算替代value,是可以使DECODE函式具備大於、小於或等於功能。