column_with_very_big_numerics
是numeric(30,0)
SELECT
column_with_very_big_numerics
FROM some_table
我正在使用pg
node.js客户端。我会把结果作为数字返回。因为这个数字很大,所以我不能使用int。
SELECT
column_with_very_big_numerics::int,
FROM some_table
上面的内容会因为超出范围而抛出错误。有没有办法解决这个问题? PostgreSQL和pg
node.js客户端可以返回的最大数字是什么?
答案 0 :(得分:2)
如果您希望column_with_very_big_numerics
以NUMERIC
的身份来找你,请不要将其投放到int
。
你写过:
SELECT
column_with_very_big_numerics::int
FROM some_table;
相反,只需写:
SELECT
column_with_very_big_numerics
FROM some_table;
The largest integer
(and largest bigint
) PostgreSQL can represent is in the documentation。这些限制不适用于numeric
,因为它是一种不同的类型。
您的客户端库必须了解如何处理numeric
;否则你可能只是将数字作为一个字符串。如果您的编程语言本身不支持这些数字,您可能需要找到一个任意精度十进制浮点库来处理这些数字。例如。在Java中,您使用内置类型BigDecimal
;在Python中你使用Python的decimal
模块(由psycopg2,IIRC自动支持)等。我不使用Node.js,听起来你正在使用它,所以我无法帮助你。
如果node.js的pg
驱动程序无法处理numeric
,则(a)编写修补程序以修复该问题,或者(b)更改模式以避免numeric
,使用bigint
和(非整数必要时)定点乘数。