Oracle的DECODE函數可以用于條件判斷和值替換,主要有以下用法:
DECODE(expr, search1, result1, search2, result2, …, default)
如果expr等于search1,返回result1;如果expr等于search2,返回result2;以此類推。如果沒有匹配項,返回default。
DECODE(expr, search1, replace1, search2, replace2, …, expr)
如果expr等于search1,返回replace1;如果expr等于search2,返回replace2;以此類推。如果沒有匹配項,返回expr本身。
DECODE(expr, search1, result1, search2, result2, …, searchN, resultN, default)
如果expr等于search1,返回result1;如果expr等于search2,返回result2;以此類推。如果沒有匹配項,返回default。
DECODE(expr, search1, result1, search2, result2, …, NULL)
如果expr等于search1,返回result1;如果expr等于search2,返回result2;以此類推。如果沒有匹配項,返回NULL。
DECODE(expr, search1, DECODE(expr2, search2, result2, …), …)
可以在DECODE函數中嵌套使用DECODE函數,實現復雜的條件判斷和值替換。
需要注意的是,DECODE函數只能進行等值判斷,不支持其他比較操作符(如大于、小于等)。如果需要進行其他比較操作,可以使用CASE語句來替代DECODE函數。