Почему mysql возвращает все строки
Я использую phpmyadmin для создания базы данных и таблицы. у рассматриваемой таблицы есть эти столбцы:
ОтправлениеГород | ArrivalCity | TakeoffDate | TakeoffTime | LandingTime | AirlineName | Цена
теперь всякий раз, когда я использую этот запрос;
select * from mynewdatabase.flights where DepartureCity = 'Rome' and ArrivalCity = 'Istanbul' and TakeoffDate = '12.06.2013' and price <= '75' ORDER BY Price
Я получаю все строки вместо ни одного. Я ничего не ожидаю, потому что нет рейсов с ценой ниже 75 €. Все поля текстовые. В чем причина этого и как я могу получить пустой результат, как я ожидал?
РЕДАКТИРОВАТЬ: Например, когда я использую тот же запрос, но с ценой <= '400', он возвращает только рейсы, цены на которые меньше или равны 400. Ошибка возникает только тогда, когда нет рейсов, которые удовлетворяют критериям.
1 ответ
Как вы и ожидали, mysql будет сравнивать цифры, а не текст.
Если цена столбца имеет любой тип числа, напишите так:
and price <= 75
Если это текст, и вы хотите сохранить его как текст, вам нужно конвертировать его с помощью CAST:
SELECT * FROM mynewdatabase.flights WHERE Price<=75 ORDER BY CAST(Price AS SIGNED);
это преобразует запрашиваемое текстовое значение в подписанное (целое), а тип столбца останется текстовым