当使用lat和lng小数进行搜索时,MySQL查询返回0行

时间:2013-02-01 01:03:54

标签: mysql sql select geospatial

我正在尝试执行此查询:

SELECT  `venues` . * 
FROM  `venues` 
WHERE  `lat` >= 39.847991180331
AND  `lng` >= -86.332592054637
AND  `lat` <= 40.137846252794
AND  `lng` <= -85.954901904578
LIMIT 0 , 30

这是lat和lng字段的表结构和一个示例行,它应该至少返回1行

lng decimal(65,15)                              
lat decimal(65,15)

Name                  Lng                   Lat
Ambre Blends Studio   -86.143746979607530   39.875314973898870

然而,当我执行上述查询时,它不返回任何行。这有什么问题?

1 个答案:

答案 0 :(得分:0)

我总是对浮点平等和不平等操作保持谨慎,MySQL过去曾经有过这类问题的历史(我不确定你使用的是哪个版本但是在503/505左右有一些变化。

我要做的第一件事是调试实际的声明。从:

开始
select venues.* from venues
 where name like 'Ambre%'

并确保您只获得一行(如果有许多以where开头的行,您可能需要调整Ambre子句。

然后一次添加其他子条款,直到该行不显示为止。第一个是:

select venues.* from venues
 where name like 'Ambre%'
   and lat >= 39.847991180331

一旦你确定哪个条件导致select失败,你就可以开始研究原因。