+-
我试图存储一些哈希(最初是十六进制)但我把它们转换为int以保存在pgsql中但得到
select 12347933502038296527::bigint
ERROR: bigint out of range
********** Error **********
ERROR: bigint out of range
SQL state: 22003
我意识到int8
type的数字太大了,我应该使用什么数据类型而不是int8? decimal
会为我的案子工作吗?任何其他可以保存这么大数字的策略?
4
投票
投票
Bigint很大。需要更大的东西是不寻常的。在大多数数据库中,只要您使用本机二进制表示即可。 Decimal
/ numeric
通常允许稍微更大的精度。
相比之下,Postgres支持numeric
/ decimal
,基本上无限精度,如documentation所述。
以下工作直接:
select 12347933502038296527::decimal
如果你想更具体:
select 12347933502038296527::decimal(20, 0)
也就是说,通常使用这么大的数字作为ID。在这种情况下,您可能希望使用字符串而不是数字表示。例如,字符串具有保持前导零的优点。