Hive 中的 COALESCE 函数作用

Hive 中的 COALESCE 函数作用

COALESCE 是 Hive 中一个非常常用的空值处理函数,用于从多个列或表达式中返回第一个非空值(non-NULL value)


1. 基本语法
COALESCE(value1, value2, ..., valueN)
  • 从左到右依次判断每个值是否为 NULL
  • 返回第一个非 NULL 的值
  • 如果所有值都是 NULL,则返回 NULL

2. 常见用途
2.1 处理空值,提供默认值
SELECT COALESCE(name, 'Unknown') AS name FROM users;
  • 如果 nameNULL,返回 'Unknown'
  • 否则返回 name
2.2 多列中取第一个非空值
SELECT COALESCE(email, phone, 'No Contact') AS contact FROM users;
  • 如果 email 非空,返回 email
  • 否则如果 phone 非空,返回 phone
  • 否则返回 'No Contact'
2.3 合并多个列的值
SELECT COALESCE(address1, address2, 'No Address') AS address FROM users;
  • 优先使用 address1,如果为空则用 address2,最后用默认值。
2.4 INSERTUPDATE 中使用
INSERT INTO users (name) VALUES (COALESCE(:input_name, 'Default Name'));
  • 如果输入参数 input_nameNULL,插入 'Default Name'

3. IFNULL 的区别
  • IFNULL(expr1, expr2):只处理两个值,如果 expr1NULL,返回 expr2
  • COALESCE:可以处理多个值,更灵活。

示例:

-- IFNULL(仅两个值)
SELECT IFNULL(name, 'Unknown') FROM users;

-- COALESCE(多个值)
SELECT COALESCE(name, nickname, 'Unknown') FROM users;

4. CASE WHEN 的等价关系

COALESCE(a, b, c) 等价于:

CASE
    WHEN a IS NOT NULL THEN a
    WHEN b IS NOT NULL THEN b
    ELSE c
END

COALESCE 更简洁。


5. 注意事项
  • COALESCE 是 SQL 标准函数,Hive、Spark SQL、MySQL、PostgreSQL 等都支持。
  • 所有参数类型应尽量一致,否则可能隐式转换。
  • 性能优于 CASE WHEN,推荐优先使用。

6. 示例数据
namenicknamephone
AliceNULL123456
NULLBobNULL
NULLNULLNULL

查询:

SELECT COALESCE(name, nickname, 'Unknown') AS display_name FROM users;

结果:

display_name
Alice
Bob
Unknown
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值