条件表达式

本页说明 Polars SQL 中可用的条件表达式。

CASE

标准 SQL CASE 表达式有两种形式。"简单"形式会从左到右检查每个 value 表达式,直到找到一个等于 expression 的值:

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

返回匹配 value 对应的 result。如果没有找到匹配项,并且存在 ELSE 子句,则返回该子句中的 result;否则返回 null。示例:

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

"搜索"形式会从左到右计算每个布尔 condition,直到某个条件为 true,并返回匹配的 result

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

如果没有任何条件为 true,并且存在 ELSE 子句,则返回该子句中的 result;否则返回 null。示例:

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,则计算并返回 true_value;否则返回 null。

if(condition, true_value, false_value)

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

COALESCE

coalesce(value[, ...])

返回参数列表中的第一个非空 value。至少需要一个参数。

NULLIF

nullif(value1, value2)

如果 value1 等于 value2,则返回 null;否则返回 value1