如何 select 基于 PostgreSQL 中的两个值的特定行

How to select a specific row based on two values in PostgreSQL

我有一个很奇怪的问题。 我知道 table 的第一行有两列具有以下值: 纬度 = 35.6635 液化天然气 = 139.395

数据类型是REAL(我已经检查过了)。

我正在尝试通过以下查询 select 这些值:

select lat, lng from mytable where lat = 35.6635 and lng = 139.395

输出什么也没有,即我在 table.

中找不到值

知道这里有什么问题吗?

Postgres 中的 REAL 类型是不精确的,这意味着您在查询中使用的准确值实际上可能不会按原样存储。如果您需要精确存储,您应该使用 NUMERICDECIMAL。有关精确和不精确数值类型的更多信息,请参阅 Postgres documentation

作为查找记录的解决方法,您可以尝试:

select lat, lng
from mytable
where round(lat, 1) = 35.7 and round(lng, 1) = 139.4;

如果上面的查询 return 多于一条记录,希望您清楚要查找的是哪条记录。

您可以尝试类似的方法:

select lat, lng from mytable where lat > 35.6634 and lng > 139.394 and lat < 35.6636 and lng < 139.396

在计算机世界中,永远不要比较等效的浮点数