Ale*_*lex 7 postgresql r rpostgresql
继此问题和随后的答案之后: Postgres 中 -Infinity 和 Infinity 的适当值
和文档,似乎很清楚real
和double precision
数字类型支持正无穷大和负无穷大。但是,没有提及numeric
类型,只是range
有“无限制”。
类型是否支持正无穷大和负无穷大numeric
(在 PostgreSQL 9.5 中),如果是,如何插入这些值?
编辑(如@TimBiegeleisen 所建议):发生这种情况的原因是我试图将数字列从R
数据库表中写入。该列包含Inf
值,但使用dbWriteTable
fromRPostgreSQL
错误:
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)
在我的特殊情况下,我可以将这些值转换Inf
为NA
并将其写为NULL
,但是当列包含缺失值或not null
在数据库中强加条件时,这不起作用。我想另一件事是写一个任意大的数字。
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)
归档时间: |
|
查看次数: |
6660 次 |
最近记录: |