DECODE函數是ORACLE PL/SQL是功能強大的函數之一目前還只有ORACLE公司的SQL提供了此函數其他數據庫廠商的SQL實現還沒有此功能DECODE有什麼用途呢?先構造一個例子假設我們想給智星職員加工資其標准是工資在元以下的將加%工資在元以上的加%通常的做法是先選出記錄中的工資字段值? select salary into varsalary from employee然後對變量varsalary用ifthenelse或choose case之類的流控制語句進行判斷如果用DECODE函數那麼我們就可以把這些流控制語句省略通過SQL語句就可以直接完成如下
select decode(sign(salary )salary*salary*salary) from employee是不是很簡潔?
DECODE的語法DECODE(valueifthenifthenifthen……else)表示如果value 等於if時DECODE函數的結果返回then……如果不等於任何一個if值則返回else初看一下DECODE 只能做等於測試但剛才也看到了我們通過一些函數或計算替代value是可以使DECODE函數具備大於小於或等於功能
decode()函數使用技巧
decode(條件值翻譯值值翻譯值……值n翻譯值n缺省值)
該函數的含義如下
IF 條件=值 THEN RETURN(翻譯值)
ELSIF 條件=值 THEN RETURN(翻譯值)
……
ELSIF 條件=值n THEN RETURN(翻譯值n)
ELSE RETURN(缺省值)
END IF
使用方法
比較大小select decode(sign(變量變量)變量變量) from dual ——取較小值sign()函數根據某個值是正數還是負數分別返回
例如變量=變量=則sign(變量變量)返回decode解碼結果為變量達到了取較小值的目的
From:http://tw.wingwit.com/Article/program/Oracle/201311/17093.html