我发现了许多类似的帖子,甚至试图了解如何在MySQL中处理负值,但都无济于事。
我有一个网站,我正在使用Google Maps,作为性能增强,我将地图上绘制的标记限制为地图边界内的标记。
我想开发一个查询,可以使用正的或负的latitude和longitude值。
对于数据库:
latitude FLOAT( 10, 6 )
longitude FLOAT( 10, 6 )查询:
SELECT *
FROM `table`
WHERE `latitude` BETWEEN 47.926930 AND 47.929806
AND `longitude` BETWEEN -97.077303 AND -97.083997如果我删除longitude的BETWEEN子句,我会得到结果,尽管没有longitude约束是不正确的。
我已经尝试过了:
AND -`longitude` BETWEEN ABS( -97.077303 ) AND ABS( -97.083997 )这确实有效,但仅适用于负的longitude值。
如果是阴性的,我需要检查longitude吗?
发布于 2012-04-03 02:49:26
您还可以使用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)发布于 2012-04-03 02:43:48
between期望格式为somefield BETWEEN lowervalue AND highervalue。您的负经度具有切换的较高/较低值。它应该是
AND longitude BETWEEN -97.083997 AND -97.077303负97.08实际上低于负97.07
发布于 2012-04-03 02:44:25
一定要检查负数是如何出现在数字行上的。:)
SELECT *
FROM `table`
WHERE `latitude` BETWEEN 47.926930 AND 47.929806
AND `longitude` BETWEEN -97.083997 AND -97.077303 https://stackoverflow.com/questions/9981948
复制相似问题