Presto 0.100 Documentation

5.3. 条件表达式

5.3. 条件表达式

CASE

标准的SQL CASE 表达式有两种模式。 “简单模式”从左向右查找表达式的每个 value , 直到找出相等的 expression:

CASE expression
    WHEN value THEN result
    [ WHEN ... ]
    [ ELSE result ]
END

返回匹配 valueresult 。 如果没有匹配到任何值,则返回 ELSE 子句的 result ; 如果没有 ELSE 子句,则返回空。示例:

SELECT a,
       CASE a
           WHEN 1 THEN 'one'
           WHEN 2 THEN 'two'
           ELSE 'many'
       END

“查找模式”从左向右判断每个 condition 的布尔值, 直到判断为真,返回匹配 result :

CASE
    WHEN condition THEN result
    [ WHEN ... ]
    [ ELSE result ]
END

如果判断条件都不成立,则返回 ELSE 子句的 result ; 如果没有 ELSE 子句,则返回空。示例:

SELECT a, b,
       CASE
           WHEN a = 1 THEN 'aaa'
           WHEN b = 2 THEN 'bbb'
           ELSE 'ccc'
       END

IF

IF 函数是语言结构, 它与下面的 CASE 表达式功能相同:

CASE
    WHEN condition THEN true_value
    [ ELSE false_value ]
END
if(condition, true_value)

如果 condition 为真,返回 true_value ; 否则返回空, true_value 不进行计算。

if(condition, true_value, false_value)

如果 condition 为真,返回 true_value ; 否则计算并返回 false_value

COALESCE

coalesce(value[, ...])

返回参数列表中的第一个非空 value 。 与 CASE 表达式相似,仅在必要时计算参数。

NULLIF

nullif(value1, value2)

如果 value1value2 相等,返回空;否则返回 value1