CASE 表达式

CASE 表达式允许诸如 SELECT 语句这样的 SQL 语句返回几个可能的结果之一,依赖于这几个条件中那哪个求值为真。

CASE 表达式有两种形式:通用的 CASE 表达式和线性的 CASE 表达式。
CASE 表达式

在 CASE 表达式中,您必须包括至少一个 WHEN 子句。随后的 WHEN 子句和 ELSE 子句是可选的。您可在 SQL 语句中您可使用列表达式的任何地方使用通用的或线性的 CASE 表达式(例如,在 SELECT 语句的 Projection 子句中)。

搜索条件中的表达式或结果值表达式可包含子查询,且您可在另一 CASE 表达式中嵌套 CASE 表达式。

当在聚集表达式中出现 CASE 表达式时,您不可使用 CASE 表达式中的聚集函数。

您可指定触发器类型布尔运算符(DELETING、INSERTING、SELECTING 或 UPDATING)作为仅在触发器例程内的 CASE 表达式中的条件。

下列查询片断声明两个聚集列表达式的别名:
SELECT . . . 
        SUM(orders.ship_weight) as o2,
        COUNT(DISTINCT 
        CASE WHEN orders.backlog MATCHES 'n' 
        THEN orders.order_num END ) AS o3, 
        . . .
在此,SUM 的参数为 DECIMAL(8,2) 列值,且 COUNT DISTINCT 聚集以 CASE 表达式作为它的参数。

请不要弄混 CASE 表达式与 SPL 的 CASE 语句,它们支持不同的语法和功能。

1 请参阅 通用的 CASE 表达式
2 请参阅 线性的 CASE 表达式