2013-04-25 3 views
0

Я пытаюсь вытащить значения долготы и широты из моей базы данных (хранится как десятичная (10,6)) между двумя значениями, но по какой-то причине одно из значений не возвращает никаких результатов.Оператор SQL BETWEEN не возвращает никаких результатов?

Вот мой запрос:

SELECT * FROM `location` WHERE location_latitude BETWEEN 53.76200 AND 53.765000 AND location_longitude BETWEEN -2.710000 AND -2.720000 

Когда я запрашиваю только широту, я получаю результаты обратно в порядке. Проблема, похоже, связана с долготой. Я все еще довольно новичок во всем этом, но может ли это иметь какое-то отношение к символу минуса до значений долготы?

Заранее благодарен!

+0

Datatype для location_latitude и location_longitude ??? – Hackerman

ответ

5

Изменение порядка параметров на BETWEEN:

AND location_longitude BETWEEN -2.720000 AND -2.710000 

Поскольку -2.72 меньше -2.71

+0

Не могли бы вы показать доказательство этого? – Kermit

+1

@FreshPrinceOfSO Nope – Lamak

+1

Фантастический, есть 10 rep. – Kermit

1

location_longitude BETWEEN -2.710000 AND -2.720000 возвращает истину тогда и только тогда -2,71 < = долгота < = -2.72. Выражение всегда возвращает false, потому что -2.72 < -2.71. Переключите два значения.

BETWEEN documentation for MySQL.

+1

В то время как вы правы, и 'BETWEEN' работает как в SQL-Server, так и в MySQL, и как он должен работать (по стандарту), вопрос помечен тегом' [tag: mysql] ', а не' [tag: sql -server] '. Возможно, вы можете предоставить ссылку на документацию mysql. –

+0

@ypercube Спасибо, что поймали это. –

Смежные вопросы