【问题标题】:How do I store an unsigned int in postgres sql?如何在 postgresql 中存储 unsigned int?
【发布时间】:2014-09-09 00:05:32
【问题描述】:

如何在 postgres 中存储 unsigned int (uint32)?我注意到 numeric(10,0) 适合位数,但这是最好的方法吗?

在进一步研究中,另一个类似的问题是存储 uint64。我找到了 numeric(20,0) 检查(BETWEEN 0 AND '18446744073709551615'::numeric(20,0))。我相信没有任何本机类型。

【问题讨论】:

标签: postgresql


【解决方案1】:

与整数类型相比,数值的算术非常慢。

使用bigint。它存储一个 8 字节整数,最大为 2^63 - 1 = 9223372036854775807

[你可能不需要整个无符号范围]

【讨论】:

  • 我想存储准确的无符号值。所以 bigint 比 numeric(10,0) 检查更快(值 >= 0 和值
  • @Fire 快得多。你仍然需要检查约束。
  • 所以bigint check (value >= 0 and value < '4294967296'::bigint)
  • 如果你试图存储一个无符号的 Int64... 并且实际上需要整个无符号范围怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 2022-01-04
相关资源
最近更新 更多