Почему 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);

это преобразует запрашиваемое текстовое значение в подписанное (целое), а тип столбца останется текстовым

Другие вопросы по тегам