operatetype: 0=新增, 1=修改, 其他=刪除
SELECT logid, userid, logtime, url, description,
CASE
WHEN operatetype = 0 THEN '新增'
WHEN operatetype = 1 THEN '修改'
ELSE '刪除'
END AS operation_name
FROM log;
SELECT logid, userid, logtime, url, description,
DECODE(operatetype, 0, '新增', 1, '修改', '刪除') AS operation_name
FROM log;
| 維度 | CASE | DECODE |
|---|---|---|
| 標準 | ANSI SQL | Oracle 專有 |
| 條件類型 | 任意布林表達式 | 僅等值匹配 |
| 可讀性 | 高 (多行) | 高 (單行) |
| 效能 | 相同 (優化器同等對待) | 相同 |
| NULL 處理 | `WHEN col IS NULL` | 自動匹配 NULL (DECODE(null, null, '是')) |
| 建議 | **首選** (標準、靈活) | 簡單等值映射可用 |
CASE WHEN sal < 1000 THEN 'Low' WHEN sal BETWEEN 1000 AND 3000 THEN 'Medium' WHEN sal > 3000 THEN 'High' ELSE 'Unknown' END
此寫法 DECODE 無法直接實現。