COALESCE与Hive SQL

Par*_*rsa 26 sql hive

由于Hive上没有IFNULL,ISNULL或者NVL支持函数,我将NULL转换为0.我试过COALESCE(*column name*, 0)但收到了以下错误消息:

参数类型不匹配0:COALESCE之后的表达式应该都具有相同的类型:"bigint"是预期的但是找到"int"

怎么解决这个?

Iva*_*ass 44

Hive支持bigint文字,因为0.8版本.所以,额外的"L"就足够了:

COALESCE(column, 0L)
Run Code Online (Sandbox Code Playgroud)


Par*_*rsa 22

正如喇嘛在评论中指出的那样,COALESCE(column, CAST(0 AS BIGINT))解决了错误.


Zor*_*ayr 5

来自[Hive语言手册][1]:

合并(T v1、T v2、...)

将返回第一个不为 NULL 的值,如果所有值均为 NULL,则返回 NULL

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-ConditionalFunctions


小智 5

由于0.11配置单元具有NVL功能 nvl(T value, T default_value)

如果value为null,则 返回默认值,否则返回value