我有一张经度和纬度位置的表。我一直成功使用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/