MySQL - 使用BETWEEN搜索负经度值

hun*_*tar 8 mysql select latitude-longitude

我发现了许多类似的帖子,甚至试图找出如何在MySQL中处理负值,但无济于事.

我有一个网站,我正在使用谷歌地图,作为一种性能增强,我将地图上绘制的标记限制在地图边界内.

我想开发一个可以使用正面或负面latitudelongitude值的查询.

对于数据库:

latitude FLOAT( 10, 6 )
longitude FLOAT( 10, 6 )
Run Code Online (Sandbox Code Playgroud)

查询:

SELECT *
FROM `table` 
WHERE `latitude` BETWEEN 47.926930 AND 47.929806 
AND `longitude` BETWEEN -97.077303 AND -97.083997
Run Code Online (Sandbox Code Playgroud)

如果我删除该BETWEEN条款,longitude我得到结果,虽然没有longitude约束,但是不正确.

我试过这个:

AND -`longitude` BETWEEN ABS( -97.077303 ) AND ABS( -97.083997 )
Run Code Online (Sandbox Code Playgroud)

哪个确实有效,但仅适用于负值longitude.

我需要检查longitude它是否为阴性?

Mos*_*cho 11

您也可以使用greatest()least()函数,因此您不必担心参数.例如:

SELECT * FROM table
WHERE latitude BETWEEN least(@lat1, @lat2) AND greatest(@lat1, @lat2)
AND  longitude BETWEEN least(@lon1, @lon2) AND greatest(@lon1, @lon2)
Run Code Online (Sandbox Code Playgroud)