我在hive中有一个值转换错误,如下所示。如何解决它。
select 28200*100000;
select cast(28200*100000 as BIGINT);
output: -1474967296
实际输出应为
2820000000
答案 0 :(得分:0)
在你的第一个查询中,Hive会自动将你的结果转换为整数,因为你的乘数是整数,结果超过整数精度(它在一天结束时是纯Java)。在第二个查询中,在数学运算之后进行强制转换,这就是为什么得到相同的结果。您可以通过以下方式执行此操作
在数学运算之前进行投射
select cast(28200 as bigint) * cast(100000 as bigint);
或表示值为long(因此结果也很长)
select 28200L*100000L;