【问题标题】:How to select a specific row based on two values in PostgreSQL如何根据 PostgreSQL 中的两个值选择特定行
【发布时间】:2019-05-20 17:51:39
【问题描述】:
我有一个非常奇怪的问题。
我知道我的表的第一行有两列具有以下值:
纬度 = 35.6635
lng = 139.395
数据类型是真实的(我已经检查过了)。
我正在尝试使用以下查询选择这些值:
select lat, lng from mytable where lat = 35.6635 and lng = 139.395
输出什么都没有,即我在表中找不到值。
知道这里有什么问题吗?
【问题讨论】:
标签:
postgresql
where
sqldatatypes
【解决方案1】:
Postgres 中的REAL 类型不精确,这意味着您在查询中使用的确切值可能实际上并未按原样存储。如果您需要精确的存储空间,您应该使用NUMERIC 或DECIMAL。有关精确和不精确数字类型的更多信息,请参阅 Postgres documentation。
作为查找记录的解决方法,您可以尝试:
select lat, lng
from mytable
where round(lat, 1) = 35.7 and round(lng, 1) = 139.4;
如果上述查询返回多条记录,希望您能清楚您要查找的记录。
【解决方案2】:
你可以试试这样的:
select lat, lng from mytable where lat > 35.6634 and lng > 139.394 and lat < 35.6636 and lng < 139.396
在计算机世界中,您永远不应该比较等效的浮点数