COALESCE

概述

COALESCE
COALESCE
函数用于返回其参数列表中第一个非空(non-null)的表达式值。如果所有参数都是空值(null),则返回空值(null)。

语法

COALESCE(expr1 [, ...])

参数

  • exprN
    exprN
    :待验证的表达式,参数数量可变,但至少需要一个。参数可以使用不同类型,但必须能够按 Lakehouse 的隐式类型转换规则推导出公共类型。

返回值

  • 所有参数先完成公共类型推导和必要的隐式转换,返回类型是推导出的公共类型。
  • 运行时返回转换后的第一个非空值;如果所有参数均为空值,则返回空值(null)。

使用示例

示例 1:基本使用

 SELECT COALESCE(null, 'A', null, 'B', 'C') as res; +-----+ | res | +-----+ | A | +-----+

在此示例中,

COALESCE
COALESCE
函数返回第一个非空参数
'A'
'A'
。

示例 2:处理多个可能为空的字段

SELECT COALESCE(column1, column2, column3) AS non_null_value FROM table_name;

假设

column1
column1
、
column2
column2
和
column3
column3
均有可能包含空值。此查询将返回这三个字段中的第一个非空值。

示例 3:混合 STRING 与数值类型

SELECT COALESCE('abc', 123) AS res; -- 默认 cz.sql.cast.mode=tolerant 时返回 123

该表达式的公共类型被推导为数值类型,

'abc'
'abc'
转换失败后变为
NULL
NULL
,因此继续返回
123
123
。如果业务希望保留字符串,应显式统一类型:

SELECT COALESCE(CAST('abc' AS STRING), CAST(123 AS STRING)) AS res; -- 返回:abc

注意事项

  • 公共类型在表达式求值前确定;运行时一旦找到转换后的第一个非空值,就会停止求值后续参数。
  • 当所有参数均为空值时,
    COALESCE
    COALESCE
    函数返回空值(null),不会引发错误。
  • 默认
    cz.sql.cast.mode=tolerant
    cz.sql.cast.mode=tolerant
    下,隐式转换失败返回
    NULL
    NULL
    ;设置为
    strict
    strict
    时转换失败报错。
  • COALESCE
    COALESCE
    通过 NULL 判定而不是相等比较选择结果。
联系我们
预约咨询
微信咨询
电话咨询
邮件咨询