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

时间:2016-09-14 23:10:17

标签: sql postgresql

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

select 12347933502038296527::bigint

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

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

1 个答案:

答案 0 :(得分:4)

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

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

以下内容直接起作用:

select 12347933502038296527::decimal

如果你想更具体:

select 12347933502038296527::decimal(20, 0)

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