HiveSQL内置函数——COALESCE函数
COALESCE(T v1, T v2, …)
COALESCE,读作 /ˌkəʊəˈles/,该函数用于返回第一个不为 NULL 的 v,如果所有 v 都为 NULL,则返回 NULL。
举个例子:
SELECT COALESCE(A, B, C) FROM TABLE_NAME
该 SQL 的返回值判断过程如下:
如果 A 不为 NULL,则返回 A,否则判断 B 是否为 NULL,若 B 不为 NULL,则返回 B,否则继续判断 C 是否为 NULL,若 C 不为 NULL,则返回 C,否则返回 NULL。
使用场景
一个常用的场景是在一张表中的某个字段的默认值为 NULL,在查询的时候,如果该字段为 NULL,我们希望返回其他有意义的值而不是 NULL 值,这时就可以使用 COALESCE 函数。
例如,用户表(dwd_user)中的常驻城市字段(city),如果为 NULL 时,我们希望在返回给最终用户时可以显示“未知”,而不是 NULL 值,可以这么写:
1 | SELECT COALESCE(city, ‘未知’) FROM dwd_user |
另一个常用场景是两张表做 FULL JOIN 时,取字段不为 NULL 的字段值。
例如,表 A(COL1, COL2, COL3) 和表 B(COL1, COL2, COL3) 做 FULL JOIN 关联,如果表 A 的字段值不为 NULL,则取表 A 的字段,否则取表 B 的字段:
1 | SELECT |
(END)
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.