위도와 경도가있는 테이블이 있습니다. 나는 BETWEEN 절을 성공적으로 사용하여 데이터베이스의 값과 동일한 값을 검색하는 경우에 도달했습니다. 이 경우 결과를 반환하지 않습니다.FLOAT (10,6)을 사용하는 MySQL - 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"
I 절 사이에 사용하는 경우는 (심지어 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.000001을 더하거나 뺀다면 Ex. "BETWEEN (40.735619-0.00001)"등.이 작업을 수행하면 두 결과가 반환됩니다.
좋아, 내가 사용하는 것> = 및 < =하지만 내가 이해하지 못하는 것은 왜>처럼 행동 사이 < 때 docs에서의 아주 명확 :
expr이보다 큰 경우 또는 min과 같고 expr이 max보다 작거나 같은 경우 BETWEEN은 1을 반환합니다.
고마워요! 10 진수 (10,6)로 데이터 유형을 변경하는 트릭을했다. 그래서 일어난 일은 db의 값을 반올림하여 범위 밖에 있고 더 이상 동등하지 않다는 것입니다. 왜 나를 죽이는가는 BETWEEN이 "> = <="와 다르게 둥글게되는 이유입니다. 그림을 이동. – tomwoods