数仓 SQL 函数对照

首页 / 条件、空值和类型转换

IF 条件判断

IF 在条件为真时返回第二个参数,否则返回第三个参数。七个引擎大多支持 IF,Hologres 需要 V2.1 及以上版本。

各引擎写法 · 迁移注意事项 · 示例

各引擎写法

引擎支持写法说明依据
MaxCompute 支持 IF(testCondition, valueTrue, valueFalseOrNull) 条件为 NULL 时按 FALSE 处理,返回第三个参数。第二、三个参数的类型必须一致。 官方文档
Hologres 支持 IF(condition, value_if_true, value_if_false) V2.1 起支持,条件为 FALSE 或 NULL 时返回第三个参数。V2.0 及以下版本需要升级实例,或改写为 CASE WHEN。 官方文档
StarRocks 支持 if(expr1, expr2, expr3) expr1 必须是 BOOLEAN,expr2 和 expr3 类型要兼容,返回类型与 expr2 相同。 官方文档
Doris 支持 IF(condition, value_true, value_false_or_null) 官方文档
Hive 支持 if(testCondition, valueTrue, valueFalseOrNull) 官方文档
Spark SQL 支持 if(expr1, expr2, expr3) Spark 1.0.0 起提供。 官方文档
Flink SQL 支持 IF(condition, true_value, false_value) 官方文档

迁移注意事项

示例

按金额标记大单

MaxCompute
SELECT IF(amount >= 1000, 'big', 'small') AS size_tag FROM orders;
Hologres
-- V2.0 及以下版本
SELECT CASE WHEN amount >= 1000 THEN 'big' ELSE 'small' END AS size_tag FROM orders;

同类函数

最后核对日期: