标准 SQL 中的条件表达式

条件表达式对其输入的计算顺序有一些限制。实质上,它们按从左到右的顺序进行计算,具有短路机制,并且只计算所选的输出值。与此相反,在调用函数之前,对常规函数的所有输入都要进行计算。条件表达式中的短路机制可用于处理错误或调整性能。

语法 输入数据类型 结果数据类型 说明

CASE expr
  WHEN value THEN result
  [WHEN ...]
  [ELSE else_result]
  END
exprvalue:任何类型 resultelse_result:输入类型的超类型。 expr 与每个连续的 WHEN 子句进行比较,并在该比较返回 true 的情况下返回第一个结果。剩余的 WHEN 子句和 else_result 不进行计算。如果 expr = value 比较针对所有 WHEN 子句都返回 false 或 NULL,则返回 else_result(如果有);如果没有,则返回 NULLexprvalue 表达式必须可隐式强制转换为常用超类型;针对强制转换后的值执行等式比较。resultelse_result 表达式必须可强制转换为常用超类型。

CASE
  WHEN cond1 THEN result
  [WHEN cond2...]
  [ELSE else_result]
  END
cond:BOOL resultelse_result:输入类型的超类型。 计算每个连续 WHEN 子句的条件 cond,并在条件为 true 的情况下返回第一个结果;其余所有 WHEN 子句和 else_result 均不进行计算。如果所有条件均为 false 或 NULL,则返回 else_result(如果有);如果没有,则返回 NULLresultelse_result 表达式必须可隐式强制转换为常用超类型。
COALESCE(expr1, ..., exprN) 任何类型 输入类型的超类型 返回第一个非 NULL 表达式的值。其余表达式不进行计算。所有输入表达式必须均可隐式强制转换为常用超类型。
IF(cond, true_result, else_result) cond:BOOL true_resultelse_result:任何类型。 如果 cond 为 true,则返回 true_result,否则返回 else_result。如果 cond 为 true,则不计算 else_result。如果 cond 为 false 或 NULL,则 true_result 不进行计算。true_resultelse_result 必须强制转换为常用超类型。
IFNULL(expr, null_result) 任何类型 输入类型的任何类型或超类型。 如果 exprNULL,则返回 null_result。否则,返回 expr。如果 expr 不是 NULL,则 null_result 不进行计算。exprnull_result 必须可隐式强制转换为常用超类型。相当于 COALESCE(expr, null_result)
NULLIF(expression, expression_to_match) T 的任何 T 类型或子类型 T 的任何 T 类型或子类型 如果 expression = expression_to_match 为 true,则返回 NULL;否则返回 expressionexpressionexpression_to_match 必须均可隐式强制转换为常用超类型;针对强制转换后的值执行等式比较。
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面