如何在PostgreSQL中存储无符号整数?

9

我该如何在Postgres中存储无符号整数(uint32)?我注意到numeric(10,0)可以容纳位数,但这是最好的方法吗?

进一步研究发现另一个类似的问题是存储uint64。我发现numeric(20,0)检查(BETWEEN 0 AND '18446744073709551615' :: numeric(20,0))。我相信没有本地类型可以支持。


1个回答

8

相比于整数类型,数字值的算术运算非常缓慢。

使用bigint。它可以存储一个8字节的整数,最高可达2^63 - 1 = 9223372036854775807

[您可能不需要完整的无符号范围]


1
我想存储精确的无符号值。因此,bigint比numeric(10,0)更快。检查(value> = 0且value <'4294967296' :: numeric(10,0))吗? - Fire
3
非常快,但你仍然需要检查约束。 - Craig Ringer
所以 bigint check (value >= 0 and value < '4294967296'::bigint) - Fire
9
如果您正在尝试存储一种无符号的Int64类型数据,并且确实需要整个无符号范围,该怎么办? - Douglas Gaskell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接