转换Bigint数字返回NULL

时间:2019-01-29 18:14:16

标签: hive casting bigint

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

select cast(18446744073709551614 as bigint); 

NULL的值将返回上述select stmnt;

我非常清楚提供的数字大于Bigint的最大数字。但是我们得到了这样的值,我必须根据这些值来计算max,min,sum,avg

那么我该如何转换这种类型的值,这样我就不会得到NULL。

1 个答案:

答案 0 :(得分:1)

使用decimal(38, 0)存储大于BIGINT的数字,它可以存储38位数字。 BIGINT可以存储19位数字。另请参阅有关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)