我有一张经度和纬度位置的表。我一直成功使用BETWEEN子句,直到遇到搜索的值与数据库中的值相同的情况。在这些情况下,它不会返回结果。这是一个示例,其中:

SELECT
  `Location`.`latitude`,
  `Location`.`longitude`
FROM
  `locations` AS `Location`
WHERE `latitude` >= 40.735619
  AND `latitude` <= 40.736561
  AND `longitude` >= -74.033882
  AND `longitude` <= -74.030861;

返回值:
"latitude"  "longitude"
"40.736561" "-74.033882"
"40.735619" "-74.030861"

如果我使用BETWEEN CLAUSE(注意,我什至尝试了this):
SELECT
  `Location`.`latitude`,
  `Location`.`longitude`
FROM
  `locations` AS `Location`
WHERE `latitude` BETWEEN LEAST(40.735619, 40.736561)
  AND GREATEST(40.736561, 40.735619)
  AND `longitude` BETWEEN LEAST(- 74.033882, - 74.030861)
  AND GREATEST(- 74.030861, - 74.033882)

我得到0个结果。哦,还有,如果我对每个值Ex加和/或减0.000001。 “BETWEEN(40.735619-0.00001)”等。如果执行此操作,它将返回两个结果。

很好,我将使用> =和docs中表现得像>和

最佳答案

您应该使用十进制数据类型而不是浮点数。浮点值的相等以及因此不精确

关于mysql - MySQL-具有FLOAT(10,6)的BETWEEN运算符的行为类似于>和<,而不是> =和<=,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11729768/

10-11 09:01