1.decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
該函數的含義如下:
IF 條件=值1 THEN
RETURN(翻譯值1)
ELSIF 條件=值2 THEN
RETURN(翻譯值2)
......
ELSIF 條件=值n THEN
RETURN(翻譯值n)
ELSE
RETURN(缺省值)
END IF
示例:
SELECT ID,DECODE(inParam,'para1','值1' ,'para2','值2','para3','值3','para4','值4','para5','值5') name FROM bank
#如果第一個參數inParam=='para1'那么那么select得到的那么顯示為值1;
#如果第一個參數inParam=='para2'那么那么select得到的那么顯示為值2;
#如果第一個參數inParam=='para3'那么那么select得到的那么顯示為值3;
#如果第一個參數inParam=='para4'那么那么select得到的那么顯示為值4;
#如果第一個參數inParam=='para5'那么那么select得到的那么顯示為值5;
#都不相等就為''
2.decode(字段或字段的運算,值1,值2,值3)
這個函數運行的結果是,當字段或字段的運算的值等於值1時,該函數返回值2,否則返回值3
當然值1,值2,值3也可以是表達式,這個函數使得某些sql語句簡單了許多
示例:
SELECT ID,DECODE(inParam,'beComparedParam','值1' ,'值2') name FROM bank
#如果第一個參數inParam=='beComparedParam',則select得到的name顯示為值1,
#如果第一個參數inParam!='beComparedParam',則select得到的name顯示為值2
select decode(sign(變量1-變量2),-1,變量1,變量2) from dual; --取較小值
sign()函數根據某個值是0、正數還是負數,分別返回0、1、-1
例如:
變量1=10,變量2=20
則sign(變量1-變量2)返回-1,decode解碼結果為“變量1”,達到了取較小值的目的。