解决PostgreSQL错误--- integer out of range

前端之家收集整理的这篇文章主要介绍了解决PostgreSQL错误--- integer out of range前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

问题描述

Postgresql中,输入以下sql语句查询时,报错ERROR: integer out of range。参见postgresql数值类型,integer数据类型的最大值为2147483647,即2*1024*1024*1024。很明显,我们输入的整数溢出了。

select 10*1024*1024*1024;

问题解决

stackoverflow针对此问题的解决办法修改列的类型为bigint,可我们的问题是溢出的整数位于查询语句而不是列中!

尝试进行类型转换,

select cast(10*1024*1024*1024  as bigint)

仍然报相同的错误,看来Postgresql默认将10*1024*1024*1024当作了integer型,我们还没来得及将其转换为bigint就溢出了。。。

这种情况下,我们可以首先计算出10*1024*1024*1024的值–10737418240,将其转为字符串,之后再转为bigint型即可。

-- 10737418240 = 10*1024*1024*1024
select cast('10737418240' as bigint)

更多

实际上在java中也有类似尴尬的问题,如下赋值较大数值给testLong时,因java默认10* 1024 * 1024 * 1024为整型。故也会出现数据溢出的错误

Long testLong = 10* 1024 * 1024 * 1024;

将上述语句改为如下即可

Long testLong = 10* 1024 * 1024 * 1024L;

猜你在找的Postgre SQL相关文章