转换 Bigint 数 Returns NULL

Casting the Bigint number Returns NULL

我需要将整数值转换为 hive 中的最高数据类型,因为我的值是 25 位数字

select cast(18446744073709551614 as bigint); 

NULL 值将返回上述 select stmnt;

我很清楚提供的数字大于 Bigint 的最大数字。但是我们得到了这样的值,我必须根据这些值计算最大值、最小值、总和、平均值

那么我怎样才能转换这种类型的值,这样我就不会得到 NULL。

使用decimal(38, 0)存储大于BIGINT的数,可以存储38位。 BIGINT can store 19 digits. Read also manual about decimal type.

对于文字后缀 BD 是必需的。示例:

hive> select CAST(18446744073709551614BD AS DECIMAL(38,0))+CAST(18446744073709551614BD AS DECIMAL(38,0));
OK
36893488147419103228
Time taken: 0.334 seconds, Fetched: 1 row(s)
hive> select CAST(18446744073709551614BD AS DECIMAL(38,0))*2;
OK
36893488147419103228
Time taken: 0.129 seconds, Fetched: 1 row(s)