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

时间:2018-12-20 08:17:54

标签: postgresql where sqldatatypes

我有一个非常奇怪的问题。 我知道表格的第一行有两列,其值如下: 纬度= 35.6635 lng = 139.395

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

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

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

输出为空,即无法在表中找到值。

你知道这里有什么问题吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

上述查询是否应返回多个记录,希望您可以清楚地找到要查找的记录。

答案 1 :(得分:1)

您可以尝试以下操作:

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

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