PostgreSQL比较两个float8列数据类型

时间:2018-08-14 18:09:51

标签: sql postgresql

我有下表items。看起来像这样

|    date    |  id |   s_px   |   c_px   | fee |
+------------+-----+----------+----------+-----+
| 2015-01-01 | 001 | 5355.00  |  5355.00 |   2 |
| 2015-01-01 | 002 | 13240.00 | 13240.00 |   3 |
| 2015-01-01 | 003 | 5840.00  |  5840.00 |   1 |
| 2015-01-01 | 004 | 20.55    |    20.59 |   5 |
| 2015-01-01 | 005 | 64.42    |    64.42 |   6 |

s_pxc_px的数据类型为pf float8

当我比较s_pxc_px是否不平等时

select * from items where s_px != c_px

这将返回几乎相同的原始表。我知道直接进行浮点比较并不容易。 但是有什么类似于numpy.isclose

1 个答案:

答案 0 :(得分:3)

不等式运算符为<>(或!=),因此您的查询正确。但是,浮点值是易变的。我建议检查一下以确保它们彼此之间的距离不大:

select *
from items
where abs(s_px - c_px) > 0.0001;