我有一个非常奇怪的问题。 我知道表格的第一行有两列,其值如下: 纬度= 35.6635 lng = 139.395
数据类型为REAL(我已经检查过了)。
我正在尝试通过以下查询选择这些值:
select lat, lng from mytable where lat = 35.6635 and lng = 139.395
输出为空,即无法在表中找到值。
你知道这里有什么问题吗?
答案 0 :(得分:1)
Postgres中的REAL
类型不精确,这意味着您在查询中使用的确切值实际上可能不会按原样存储。如果需要精确存储,则应使用NUMERIC
或DECIMAL
。有关精确和不精确数字类型的更多信息,请参见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
在计算机世界中,永远不要比较等效的浮点数