postgres - bigint超出范围错误,用于非常大的数字的数据类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgres - bigint超出范围错误,用于非常大的数字的数据类型相关的知识,希望对你有一定的参考价值。

我试图存储一些哈希(最初是十六进制)但我把它们转换为int以保存在pgsql中但得到

select 12347933502038296527::bigint

ERROR:  bigint out of range
********** Error **********
ERROR: bigint out of range
SQL state: 22003

我意识到int8type的数字太大了,我应该使用什么数据类型而不是int8? decimal会为我的案子工作吗?任何其他可以保存这么大数字的策略?

答案

Bigint很大。需要更大的东西是不寻常的。在大多数数据库中,只要您使用本机二进制表示即可。 Decimal / numeric通常允许稍微更大的精度。

相比之下,Postgres支持numeric / decimal,基本上无限精度,如documentation所述。

以下工作直接:

select 12347933502038296527::decimal

如果你想更具体:

select 12347933502038296527::decimal(20, 0)

也就是说,通常使用这么大的数字作为ID。在这种情况下,您可能希望使用字符串而不是数字表示。例如,字符串具有保持前导零的优点。

以上是关于postgres - bigint超出范围错误,用于非常大的数字的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

错误:Postgresql 中的日期/时间字段值超出范围

超出JavaScript安全整数限制的数字计算-BigInt

C#-“DateTime.UtcNow”以一种格式输出日期,该格式被视为超出 Postgres DB 的范围

在Postgres中将十六进制字符串转换为bigint [重复]

postgres 数据类型--数字类型

postgres 数据类型--数字类型