轉自:https://www.cnblogs.com/vinsonLu/p/3512526.htmlhtml
一、含義函數
(1)decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)spa
IF 條件=值1 THEN
RETURN(翻譯值1)
ELSIF 條件=值2 THEN
RETURN(翻譯值2)
......
ELSIF 條件=值n THEN
RETURN(翻譯值n)
ELSE
RETURN(缺省值)
END IF翻譯
實例code
SELECT ACCT_SEQ, DECODE(ACCT_SEQ, 119, '22342', 58, '23423', 326, '42342', 'UNKONWN') AS PRODUCT_ID FROM AM_ACCT_NET;
結果htm
(2)decode(字段或字段的運算,值1,值2,值3)blog
這個函數運行的結果是,當字段或字段的運算的值等於值1時,該函數返回值2,不然返回值3
值1,值2,值3也能夠是表達式class
實例變量
二、比較大小select
select decode(sign(變量1-變量2),-1,變量1,變量2) from dual; --取較小值
sign()函數根據某個值是0、正數仍是負數,分別返回0、一、-1
例如:
變量1=10,變量2=20
則sign(變量1-變量2)返回-1,decode解碼結果爲「變量1」,達到了取較小值的目的。
實例
SELECT DECODE(SIGN(123-342),-1,123,1,342)FROM DUAL;
結果