MySQL-Поиск отрицательных значений долготы между
я нашел много подобных сообщений и даже пытался выяснить, как обрабатывать отрицательные значения в MySQL, но безрезультатно.
у меня есть сайт, на котором я использую Google Maps, и в качестве повышения производительности я ограничиваю маркеры, которые нарисованы на карте, теми, которые находятся в границах карты.
Я хотел бы разработать запрос, который будет работать с положительными или отрицательными latitude
и longitude
значения.
для база данных:
latitude FLOAT( 10, 6 )
longitude FLOAT( 10, 6 )
запрос:
SELECT *
FROM `table`
WHERE `latitude` BETWEEN 47.926930 AND 47.929806
AND `longitude` BETWEEN -97.077303 AND -97.083997
если я брошу BETWEEN
статьи longitude
Я получаю результаты, хотя и неверные с no longitude
ограничения.
я попытался это:
AND -`longitude` BETWEEN ABS( -97.077303 ) AND ABS( -97.083997 )
, который работает, но только для отрицательных longitude
значения.
мне нужно проверить longitude
если его отрицательным?
3 ответов
вы также можете использовать greatest()
и least()
функции, поэтому вам не придется беспокоиться о параметрах. Например:
SELECT * FROM table
WHERE latitude BETWEEN least(@lat1, @lat2) AND greatest(@lat1, @lat2)
AND longitude BETWEEN least(@lon1, @lon2) AND greatest(@lon1, @lon2)
between
ожидает формате somefield BETWEEN lowervalue AND highervalue
. Ваши отрицательные долготы имеют более высокие/более низкие значения. Он должен быть!--4-->
AND longitude BETWEEN -97.083997 AND -97.077303
отрицательный 97.08 на самом деле ниже, чем отрицательный 97.07
проверьте, как отрицательные числа располагаются на числовой прямой. :)
SELECT *
FROM `table`
WHERE `latitude` BETWEEN 47.926930 AND 47.929806
AND `longitude` BETWEEN -97.083997 AND -97.077303