我需要测试PostgreSQL中的数值/浮点值是否不是数字(NaN)。注意"PostgreSQL treats NaN
values as equal",所以this C++ trick doesn't work。由于我在PostgreSQL 9.3中没有看到任何isnan
函数,下面是我的最佳尝试:
create or replace function isnan(double precision) returns boolean as
$$select $1::text = 'NaN'::text$$ language sql;
有没有更好的方法测试
NaN
s? 最佳答案
有没有更好的方法来测试南斯?
简单比较一下是否平等:
SELECT double precision 'NaN' = double precision 'NaN';
因为,根据您链接到的文档,Pg将
NaN
s视为相等。我对此感到惊讶,因为它正确地将NULL
视为不等于任何其他NULL
,并且本应期望NaN
=NaN
返回NULL
,但是。。。好吧,它起作用了。或者如果你想要一个函数:
create or replace function isnan(double precision)
language sql
immutable
returns boolean as $$
select $1 = double precision 'NaN'
$$;
关于postgresql - 如何检查数字是否为NaN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25858859/