mysql号码通配符

时间:2012-03-14 07:27:20

标签: mysql numbers coordinates wildcard

我目前在mysql db中有一个包含四列的表:State,City,Latitude,Longitude。 我的纬度和经度列的类型为float(10,6)。 我正在寻找实现MySQL查询,我可以搜索类似的纬度经度条目,例如,我想实现这样的事情:

SELECT * FROM `mytable` WHERE `Latitude` LIKE '41.wxyz' and 'Longitude' LIKE '-87.wxyz'

其中wxyz可以是任何数字。我想这样做,所以我可以返回任何给定任意坐标附近的所有城市。任何人都可以帮助我吗?

解/ UPDATE 我无法通过下面提供的答案让我的应用程序执行我想要的操作!虽然我很欣赏每个人的意见;我能够扩展我的SQL查询知识。为了让我的应用程序找到关于纬度和经度对的附近位置,我使用了Haversine公式。详情请参阅谷歌地图文章。 https://developers.google.com/maps/articles/phpsqlsearch

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;

其中lat和lng是mysql表中的列。和37和-122是您希望在表格中找到其他附近坐标的坐标。 :)

2 个答案:

答案 0 :(得分:2)

你也可以这样做:

SELECT * FROM `mytable` WHERE (`Latitude` between 41.0 and 42.0) and ('Longitude' between -87.0 and -88.0)

试试这个。

答案 1 :(得分:2)

您可以使用ROUND功能,例如 -

SELECT * FROM `mytable`
  WHERE ROUND(Latitude, 0) = 41 AND ROUND(Longitude, 0) = -87