You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DuckDB的REAL/FLOAT4类型列中插入Infinity、NaN等特殊浮点值

DuckDB插入特殊浮点值(Infinity/-Infinity/NaN)的解决方法

报错原因

DuckDB的隐式类型转换规则比PostgreSQL更严格,直接传入带引号的特殊值字符串时,系统不会自动将其识别为浮点特殊值,因此会抛出字符串转FLOAT失败的错误。

可用插入方案

方案1:显式类型转换

对字符串常量强制声明浮点类型即可匹配官方文档的用法:

-- FLOAT/REAL两种类型转换均可
INSERT INTO table_1 VALUES ('Infinity'::REAL);
INSERT INTO table_1 VALUES ('-Infinity'::REAL);
INSERT INTO table_1 VALUES ('NaN'::REAL);

方案2:使用内置常量函数(更推荐,无字符串转义风险)

DuckDB提供了专用的内置函数直接生成对应特殊值,无需处理字符串转换逻辑:

INSERT INTO table_1 VALUES (inf()); -- 正无穷
INSERT INTO table_1 VALUES (-inf()); -- 负无穷
INSERT INTO table_1 VALUES (nan()); -- 非数字

验证插入结果

执行以下查询即可确认特殊值插入成功:

SELECT 
  col_1,
  isinf(col_1) AS 是否为无穷值,
  isnan(col_1) AS 是否为NaN
FROM table_1;

内容的提问来源于stack exchange,提问作者Hawk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:06:05