PostgreSQL 数字类型是否支持无穷大(和 -infinity)?

Ale*_*lex 7 postgresql r rpostgresql

继此问题和随后的答案之后: Postgres 中 -Infinity 和 Infinity 的适当值

文档,似乎很清楚realdouble precision数字类型支持正无穷大和负无穷大。但是,没有提及numeric类型,只是range有“无限制”。

类型是否支持正无穷大和负无穷大numeric(在 PostgreSQL 9.5 中),如果是,如何插入这些值?

编辑(如@TimBiegeleisen 所建议):发生这种情况的原因是我试图将数字列从R数据库表中写入。该列包含Inf值,但使用dbWriteTablefromRPostgreSQL错误:

Error in postgresqlgetResult(new.con) : 
  RS-DBI driver: (could not Retrieve the result : 
ERROR:  invalid input syntax for type numeric: "Inf"
Run Code Online (Sandbox Code Playgroud)

在我的特殊情况下,我可以将这些值转换InfNA并将其写为NULL,但是当列包含缺失值或not null 在数据库中强加条件时,这不起作用。我想另一件事是写一个任意大的数字。

Cra*_*ger 7

NUMERIC不支持 +-infinity,虽然它支持 NaN。这是一个相当不幸的限制。解决它可能需要更改磁盘二进制格式,numeric这可能具有挑战性......

craig=> SELECT NUMERIC 'NaN';
 numeric 
---------
     NaN
(1 row)

craig=> SELECT NUMERIC '-inf';
ERROR:  invalid input syntax for type numeric: "-inf"
LINE 1: SELECT NUMERIC '-inf';
                       ^
craig=> SELECT NUMERIC '+inf';
ERROR:  invalid input syntax for type numeric: "+inf"
LINE 1: SELECT NUMERIC '+inf';

craig=> SELECT NUMERIC '+infinity';
ERROR:  invalid input syntax for type numeric: "+infinity"
LINE 1: SELECT NUMERIC '+infinity';
                       ^
craig=> SELECT NUMERIC 'infinity';
ERROR:  invalid input syntax for type numeric: "infinity"
LINE 1: SELECT NUMERIC 'infinity';
                       ^
craig=> SELECT NUMERIC '-infinity';
ERROR:  invalid input syntax for type numeric: "-infinity"
LINE 1: SELECT NUMERIC '-infinity';
Run Code Online (Sandbox Code Playgroud)


pir*_*iro 7

PostgreSQL 将从 v14 支持数字 +inf/-inf