SQL сравнивает целые числа из столбца, вывод неверен

У меня есть таблица SQL в PHPMyAdmin с двумя столбцами, каждый из которых содержит целые числа (см. изображение)

SQL сравнивает целые числа из столбца, вывод неверен

Когда строка пуста, значение равно null. Если я выполню следующий запрос:

SELECT * FROM `18-3-2019` WHERE `COL 13` < `COL 14`

Я получаю следующий результат (левый столбец — COL 13, правый — COL 14):

SQL сравнивает целые числа из столбца, вывод неверен

Проблема в том, что утверждение не всегда верно, например, вывод 12 меньше 6. Я вижу связь между числами выше 10 в выводе, поскольку они меньше другого числа. Как это исправить?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
35
1

Ответы 1

Вам нужно преобразовать строковые значения (CAST) в целые числа (VARCHAR / INT).

SELECT '12' < '6'; -- 1

используя SIGNED для сравнения значений:

SELECT 12 < 6; -- 0
SELECT CAST('12' AS SIGNED) < CAST('6' AS SIGNED); -- 0

демо на dbfiddle.uk

Спасибо, вдруг заработало. Я думал, что уже пробовал это, но теперь это сработало.

Jip Harthoorn 18.03.2019 22:58

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