应该使用哪种PostgreSQL列类型来存储Java BigDecimal?

daj*_*ood 20 java postgresql bigdecimal

我应该使用什么PostgreSQL列类型来存储Java BigDecimal?

小智 22

请参阅PostgreSQL数据类型 - 可能是Numeric,它可以充当任意精度类型(这是PostgreSQL扩展).

...没有任何精度或比例创建一个列,其中可以存储任何精度和比例的数值,直到精度的实现限制.

但我并不完全确定"精度的实施限制"是什么.从未尝试过真正的大数字.如果达到限制,则可以回退text.但是,我怀疑在此之前会有重大的其他问题;-)如果你想存储更少,那么指定精度和/或比例numeric.

编辑为sjr指出,限制是1000个十进制数字的精度(来自同一个链接):

数字类型可以存储最多1000位精度的数字[在currentl实现中]并完全执行计算.特别建议在需要准确性的情况下存储货币金额和其他数量......

如果需要更高的精度 - 尽管手头有更大的问题 - 那么数字列将不适合(单独).但这实际上更像是一种非常极端的 "假设",并且可能不起限制作用.

  • 我将您的帖子编辑为最新版本的文档。8.2 似乎有点过时了;) (2认同)

Fra*_*ens 5

只需将Java映射用于常见的SQL数据类型。在这种情况下,您可以使用NUMERIC或DECIMAL。