CASE 表示式

CASE 表示式可讓您在表示式中使用 IF ... THEN ... ELSE 邏輯。

在簡單的狀況表示式中,CASE 會搜尋第一組 WHEN ... THEN,其中 expr 等於 comparison_expr,,然後會傳回 return_expr。如果沒有任何一組 WHEN ... THEN 符合這個條件,但是有 ELSE 子句存在時,CASE 就會傳回 else_expr。否則,CASE 會傳回空值。

在被搜尋的 CASE 表示式中,CASE 會由左向右搜尋,一旦找到為 true 的 condition,就傳回 return_expr。如果找不到任何為 true 的 condition,但是有 ELSE 子句存在時,CASE 就會傳回 else_expr。否則,CASE 會傳回空值。

傳回值

else_expression 引數相同

語法

CASE { simple_case_expression
     | searched_case_expression
     }
     [ ELSE else_expression ]
     END

simple_case_expression::=
     expr WHEN comparison_expr
          THEN return_expr
          [ WHEN comparison_expr
            THEN return_expr ]...

searched_case_expression::=
     WHEN condition THEN return_expr
     [ WHEN condition THEN return_expr ]...

引數

expr -- 目前測試的基礎表示式。

comparison_expr -- 測試 expr 時所依據的表示式。它必須與 expr 為相同的基本資料類型 (數字或文字)。

condition -- 條件表示式。

return_expr -- 找到相符項目或條件為 true 時所傳回的值。

範例

以下敘述句會依據 credit_limit 的值,傳回 LowMediumHigh

CASE credit_limit WHEN 100 THEN 'Low'
   WHEN 5000 THEN 'High'
   ELSE 'Medium'

下一個敘述句中,如果薪資大於或等於 2000,便會傳回實際的薪資,如果小於 2000,則傳回 2000。

CASE WHEN salary > 2000 THEN salary
   ELSE 2000 END