CASE(简单)

简单的 CASE 会根据单个输入表达式的值返回结果,如果所有比较值都不匹配,则返回默认结果。

另请参阅:IF

用法示例

将付款代码替换为直观的名称:

    CASE Payment Type
        WHEN "CC" THEN "Credit Card"
        WHEN "DC" THEN "Debit Card"
        WHEN "GC" THEN "Gift Card"
        WHEN "CA" THEN "Cash"
        ELSE "Other"
    END

语法

    CASE input_expression
        WHEN expression_to_match THEN result
        [WHEN expression_to_match THEN result]
        [...]
        [ELSE else_result]
    END

参数

  • input_expression - 任何有效的字段或表达式。
  • [expression_to_match - 任何有效的字段或表达式。WHEN 子句会将 input_expressioninput_expression 进行比较,如果这两个值相等,则返回 true;如果不相等,则返回 false。]{#when-conditions}
  • result - 任何有效的字段或表达式。每个 WHEN 子句都必须有一个匹配的 THEN 子句,该子句用于指定在该条件为 true 时要返回的结果。如果有多个 WHEN 子句,CASE 语句会返回第一个为 true 的子句的结果。
  • else_result(可选)- 任何有效的字段或表达式。ELSE else_result 子句用于为 CASE 语句指定默认结果。如果所有 WHEN 子句均不为 true,则返回此子句。如果 CASE 语句没有 ELSE 子句,并且所有 WHEN 子句均不为 true,则 CASE 语句会返回 NULL

CASE 的简单运作方式

简单的 CASE 语句包含以下元素:

  • CASE 关键字,后跟输入表达式。
  • WHEN:与 input_expression 进行比较的值:如果该值等于 input_expression,则此子句为 true。您可以在单个 CASE 语句中使用多个 WHEN 子句。
  • THEN:如果 WHEN 子句的条件为 true,则返回的结果。在 CASE 语句中,每个 WHEN 子句都必须对应一个 THEN 子句。
  • ELSE:可选。如果所有 WHEN 子句条件均不为 true,CASE 会返回 ELSE 子句中的值,如果未指定 ELSE 子句,则返回 NULL
  • END 关键字。

CASE 会计算每个连续 WHEN 子句,并在条件为 true 的情况下返回第一个结果。其余所有 WHEN 子句和 ELSE 结果均不进行计算。如果所有 WHEN 条件均为 false 或 NULLCASE 会返回 ELSE 结果;如果没有 ELSE 子句,则返回 NULL

示例

为您的高级客户提供自定义链接:

    CASE Premium Status
        WHEN "Platinum" THEN CONCAT(Site URL, "platinum_welcome.html")
        WHEN "Gold" THEN CONCAT(Site URL, "gold_welcome.html")
        WHEN "Silver" THEN CONCAT(Site URL, "silver_welcome.html")
        ELSE CONCAT(Site URL, "welcome.html")
    END