我需要将整数值转换为蜂巢中的最高数据类型,因为我的值是25位数字
select cast(18446744073709551614 as bigint);
NULL
的值将返回上述select stmnt;
我非常清楚提供的数字大于Bigint
的最大数字。但是我们得到了这样的值,我必须根据这些值来计算max,min,sum,avg
那么我该如何转换这种类型的值,这样我就不会得到NULL。
答案 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)