首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -使用BETWEEN搜索负的经度值

MySQL -使用BETWEEN搜索负的经度值
EN

Stack Overflow用户
提问于 2012-04-03 02:40:22
回答 3查看 2.8K关注 0票数 8

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

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

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

对于数据库:

代码语言:javascript
复制
latitude FLOAT( 10, 6 )
longitude FLOAT( 10, 6 )

查询:

代码语言:javascript
复制
SELECT *
FROM `table` 
WHERE `latitude` BETWEEN 47.926930 AND 47.929806 
AND `longitude` BETWEEN -97.077303 AND -97.083997

如果我删除longitudeBETWEEN子句,我会得到结果,尽管没有longitude约束是不正确的。

我已经尝试过了:

代码语言:javascript
复制
AND -`longitude` BETWEEN ABS( -97.077303 ) AND ABS( -97.083997 )

这确实有效,但仅适用于负的longitude值。

如果是阴性的,我需要检查longitude吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-03 02:49:26

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

代码语言:javascript
复制
SELECT * FROM table
WHERE latitude BETWEEN least(@lat1, @lat2) AND greatest(@lat1, @lat2)
AND  longitude BETWEEN least(@lon1, @lon2) AND greatest(@lon1, @lon2)
票数 11
EN

Stack Overflow用户

发布于 2012-04-03 02:43:48

between期望格式为somefield BETWEEN lowervalue AND highervalue。您的负经度具有切换的较高/较低值。它应该是

代码语言:javascript
复制
AND longitude BETWEEN -97.083997 AND -97.077303

负97.08实际上低于负97.07

票数 4
EN

Stack Overflow用户

发布于 2012-04-03 02:44:25

一定要检查负数是如何出现在数字行上的。:)

代码语言:javascript
复制
SELECT *
FROM `table` 
WHERE `latitude` BETWEEN 47.926930 AND 47.929806 
  AND `longitude` BETWEEN -97.083997 AND -97.077303 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9981948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档