【发布时间】:2016-09-06 07:51:06
【问题描述】:
我的表格有以文本形式存储的纬度和经度值。对于 lat 和 long 值的记录:
+------+-------------------+--------------------+
| Name | Lat | Long |
+------+-------------------+--------------------+
| ABC | 32.74943951828427 | -97.33141142455626 |
+------+-------------------+--------------------+
我的 SQL 查询如下:
SELECT * FROM Incident I WHERE
(I.Lat BETWEEN '32.740446302225' AND '32.758432734343')
AND
(I.Long BETWEEN '-97.342104340547' AND '-97.320718508566')
LIMIT 5
但这会导致返回 0 行。 "ABC" 记录确实存在于表中,但我不知道为什么它没有拉它。字符串不能作为浮点数比较吗?
【问题讨论】:
-
更大的问题是您为什么要以这种方式使用纬度和经度值?通常,您需要计算从一点到
ABC或表中其他位置的距离。 -
这可以通过 SQL 查询来完成吗?
-
谷歌“Haversine MySQL”
-
你应该使用polygon search
-
x BETWEEN a AND b表示a <= x AND x <= b。但是'-97.342104340547' > '-97.320718508566'(因为字符串使用字典顺序进行比较)这会导致在空范围内搜索I.Lat。显然,它没有找到任何记录。