解决PostgreSQL错误--- integer out of range
发布时间:2020-12-13 17:05:06 所属栏目:百科 来源:网络整理
导读:问题描述 PostgreSQL中,输入以下sql语句查询时,报错 ERROR: integer out of range 。参见postgresql数值类型,integer数据类型的最大值为2147483647,即2*1024*1024*1024。很明显,我们输入的整数溢出了。 select 10 *1024 *1024 *1024 ; 问题解决 stackov
问题描述PostgreSQL中,输入以下sql语句查询时,报错 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;
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |