DECODE 相當於簡化版 CASE 或 IF-THEN-ELSE,語法:
DECODE(expr, search1, result1, search2, result2, ..., default_result)
依序比對 expr 與各 search 值,匹配則回傳對應 result;全不匹配則回傳 default_result(可省略,預設為 NULL)。
SELECT DECODE(T1.STATUS,
'96', '救援完成',
'97', '拖車完成',
'98', '終止/自解',
'') AS 施救結果
FROM rescue_table T1;
STATUS = '96' → 顯示「救援完成」STATUS = '97' → 顯示「拖車完成」STATUS = '98' → 顯示「終止/自解」| 特性 | DECODE | CASE |
|---|---|---|
| 可讀性 | 簡單等值比對極佳 | 支援範圍、複合條件、IS NULL 等 |
| 效能 | 幾乎相同 | 幾乎相同 |
| 標準相容 | Oracle 專屬 | ANSI SQL 標準 |
建議:簡單等值映射用 DECODE 程式碼最精簡;複雜條件改用 CASE 更清晰且可移植。