Oracle的DECODE函數用于對一個表達式進行條件判斷,根據條件的不同返回不同的結果。它的基本語法如下:
DECODE(expr, search1, result1[, search2, result2, …, default])
其中,expr是要進行條件判斷的表達式,search1、search2等是要匹配的值,result1、result2等是匹配成功時的返回結果,default是可選的默認返回值。
DECODE函數按照順序依次匹配search1、search2等,如果expr的值等于某個search值,則返回相應的result值;如果沒有找到匹配的search值,則返回default值(如果沒有指定default,則返回null)。
DECODE函數可以用于多種情況,例如:
SELECT name, DECODE(type, ‘A’, ‘Apple’, ‘B’, ‘Banana’, ‘C’, ‘Cherry’, ‘Unknown’) AS fruit
FROM fruits;
這個例子中,根據type列的不同值,將其映射為相應的水果名稱,如果type的值不是’A’、‘B’或’C’,則返回’Unknown’。
SELECT name, DECODE(score, 90, ‘A’, 80, ‘B’, 70, ‘C’, ‘D’) AS grade
FROM students;
這個例子中,根據score列的分數,判斷學生的等級,如果score為90,則返回’A’,如果score為80,則返回’B’,以此類推,如果沒有匹配的分數,則返回’D’。
DECODE函數可以簡化復雜的CASE語句,提高查詢的可讀性和效率。但需要注意的是,DECODE函數是Oracle特有的函數,在其他數據庫系統中可能沒有對應的函數。