我正在尝试存储一些哈希(本来是十六进制的),但是我将它们强制转换为int以保存在pgsql中,但得到了
select 12347933502038296527::bigint
ERROR: bigint out of range
********** Error **********
ERROR: bigint out of range
SQL state: 22003
我意识到该数字对于int8
type来说太大了,我应该使用哪种数据类型而不是int8?会decimal
适合我的情况吗?还有什么其他策略可以挽救如此庞大的数量?
Bigint的很大。需要比这更大的东西是不寻常的。在大多数数据库中,使用本机二进制表示形式就可以做到这一点。Decimal
/numeric
通常允许稍高的精度。
相比之下,Postgres支持numeric
/decimal
基本上没有限制的精度,如文档中所述。
以下直接起作用:
select 12347933502038296527::decimal
如果您想更具体:
select 12347933502038296527::decimal(20, 0)
也就是说,通常将如此大的数字用作ID。在这种情况下,您可能要使用字符串而不是数字表示形式。例如,字符串具有保留前导零的优势。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句