CASE 表达式

通过 CASE 表达式,可以在表达式中使用 IF ... THEN ... ELSE 逻辑。

在简单 Case 表达式中,CASE 搜索 expr 等于 comparison_expr 的第一个 WHEN ... THEN 对,然后返回 return_expr。如果没有任何 WHEN ... THEN 对符合此条件,并且存在 ELSE 子句,则 CASE 返回 else_expr。否则,CASE 返回空值。

在搜索的 CASE 表达式中,CASE 从左到右进行搜索,直到找到一个为真的 condition,然后返回 return_expr。如果找不到为真的 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 是在找到匹配项或条件为真时返回的值。

示例

以下语句根据 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