DECODE 是 Oracle 獨有的單行條件函數,語法緊湊、執行效率高、可直接用於 SELECT/WHERE/ORDER BY。本文對比 CASE、講解語法、實戰薪資調整案例、SQL*Plus 腳本管理命令,幫助您熟練掌握這把「瑞士軍刀」。
DECODE(expr, search1, result1,
[search2, result2, ...],
[default])
-- 等價於:
CASE expr
WHEN search1 THEN result1
WHEN search2 THEN result2
...
ELSE default
END
優勢:無關鍵字干擾,解析樹更簡單,極大 SQL 中性能略優於 CASE。
SELECT job, sal,
DECODE(job,
'ANALYST', sal * 1.10,
'CLERK', sal * 1.15,
'MANAGER', sal * 1.20,
sal) AS revised_salary
FROM scott.emp;
結果片段:
| JOB | SAL | REVISED_SALARY |
|---|---|---|
| CLERK | 800 | 920 |
| SALESMAN | 1600 | 1600 |
| MANAGER | 2975 | 3570 |
| ANALYST | 3000 | 3300 |
| PRESIDENT | 5000 | 5000 |
| 命令 | 作用 | 示例 |
|---|---|---|
| SAVE | 保存緩衝區 SQL 到文件 | SAVE 'D:\selectEmp.txt' [CREATE/REPLACE/APPEND] |
| GET | 從文件載入緩衝區(不執行) | GET 'D:\selectEmp.txt' → 再輸入 / 或 RUN |
| @ / START | 載入並自動執行 | @ D:\selectEmp.txt |