decode的用法
含義解釋:?
??? decode(條件,值1,翻譯值1,值2,翻譯值2,...值n,翻譯值n,缺省值)
??? 該函數(shù)的含義如下:
IF 條件=值1 THEN
RETURN(翻譯值1)
ELSIF 條件=值2 THEN
RETURN(翻譯值2)
......
ELSIF 條件=值n THEN
RETURN(翻譯值n)
ELSE
RETURN(缺省值)
END IF
??? 使用方法:?
??? 1、比較大小
select decode(sign(變量1-變量2),-1,變量1,變量2) from dual; --取較小值
sign()函數(shù)根據(jù)某個值是0、正數(shù)還是負數(shù),分別返回0、1、-1
??? 例如:
變量1=10,變量2=20
則sign(變量1-變量2)返回-1,decode解碼結(jié)果為“變量1”,達到了取較小值的目的。
??? 2、表、視圖結(jié)構(gòu)轉(zhuǎn)化
??? 現(xiàn)有一個商品銷售表sale,表結(jié)構(gòu)為:
month char(6) --月份
sell number(10,2) --月銷售金額
但是只有一個值時,這種情況可能有點特殊:下面給出一個我做過的例子:
select decode((to_char(pztysj,'yyyy-mm-dd hh24:mi:ss')||'到'||to_char(pzfysj,'yyyy-mm-dd hh24:mi:ss')),'到','',to_char(pztysj,'yyyy-mm-dd hh24:mi:ss')||'到'||to_char(pzfysj,'yyyy-mm-dd hh24:mi:ss')) as pztysj from tb_tms_tysq_tysq t
如果(to_char(pztysj,'yyyy-mm-dd hh24:mi:ss')||'到'||to_char(pzfysj,'yyyy-mm-dd hh24:mi:ss')='到' 則 該字段的結(jié)果為'',否則為to_char(pztysj,'yyyy-mm-dd hh24:mi:ss')||'到'||to_char(pzfysj,'yyyy-mm-dd hh24:mi:ss')