PostgreSQL整数列查询NaN值报错,如何正确操作?
问题分析与解决
核心错误原因
PostgreSQL的integer(整数)类型不支持存储NaN(非数字)值,整数列里根本不可能存在NaN。你用numbers='NaN'查询时,PostgreSQL会尝试将字符串'NaN'转换为整数类型,而'NaN'无法转成有效整数,因此触发语法错误。
正确处理方式
分两种情况处理:
若要查找缺失/未赋值的整数:
整数列的缺失值以NULL表示,查询语句改为:SELECT * FROM my_table WHERE numbers IS NULL;若业务确实需要存储NaN值:
先将numbers列的类型修改为支持NaN的浮点类型(比如double precision或numeric),示例语句:ALTER TABLE my_table ALTER COLUMN numbers TYPE double precision;之后查询NaN值需使用专用操作符:
SELECT * FROM my_table WHERE numbers IS NaN;(注:PostgreSQL中判断浮点类型的NaN不能直接用
=,必须用IS NaN操作符)
内容的提问来源于stack exchange,提问作者galemair
相关产品推荐
相关产品推荐

