简单的 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_expression
与input_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 或 NULL
,CASE
会返回 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