首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle CASE 表達式兩大形式速查:簡單 CASE 與搜索 CASE 語法對照表

     編輯:Oracle 資料庫基礎

快速語法對照

特性簡單 CASE搜索 CASE
語法CASE expr WHEN v1 THEN r1 ... ELSE def ENDCASE WHEN cond1 THEN r1 ... ELSE def END
比較方式等值 (=)任意布爾表達式
NULL 匹配不匹配 (NULL≠NULL)支持 IS NULL
適用場景單列多值映射範圍、多列、複合條件
可讀性極高高

範例:產品類型解碼 (雙形式等價)

-- 簡單 CASE
SELECT product_id,
       CASE product_type_id
         WHEN 1 THEN 'Book'
         WHEN 2 THEN 'Video'
         WHEN 3 THEN 'DVD'
         WHEN 4 THEN 'CD'
         ELSE 'Magazine'
       END AS category
FROM   products;

-- 搜索 CASE
SELECT product_id,
       CASE
         WHEN product_type_id = 1 THEN 'Book'
         WHEN product_type_id = 2 THEN 'Video'
         WHEN product_type_id = 3 THEN 'DVD'
         WHEN product_type_id = 4 THEN 'CD'
         ELSE 'Magazine'
       END AS category
FROM   products;

結果集 (12 行)

PRODUCT_ID  CATEGORY
----------  --------
1           Book
2           Book
3           Video
4           Video
5           Video
6           Video
7           DVD
8           DVD
9           CD
10          CD
11          CD
12          Magazine

最佳實踐提示

  1. 優先用簡單 CASE — 解析器優化更好、語義更清晰。
  2. 需範圍/多列/NULL 判斷 → 搜索 CASE。
  3. 所有分支返回類型保持一致,避免隱式轉換。
  4. ELSE 子句建議始終寫上,防止隱式返回 NULL 導致下游邏輯錯誤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved