SQL Сортировать по … ASC

У меня проблема с запросом SQL. Я хочу, чтобы мои результаты сортировались в порядке возрастания, но проблема в том, что БД сортирует мне результаты только по первому значению, тогда как логически 2 должно быть до 19, например.

Вот мой запрос и скриншот результата, который не идет вообще:

SELECT * FROM mail WHERE titre LIKE '%$mot%' ORDER BY mail.titre ASC

Очень плохая сортировка ...

Я хочу, чтобы все результаты сортировались так: 1 2 3 4 5 … 101 102 103 … 8845 8850 … и так далее.

У вас есть идея для этой проблемы?

С уважением.

0

Решение

Я думаю, что ваша колонка помечена как char, Таким образом, СУБД сортирует по строковому значению. Вы должны преобразовать свои значения в int в предложении sort.

SELECT * FROM mail WHERE titre LIKE '%$mot%' ORDER BY convert(mail.titre, unsigned integer) ASC
1

Другие решения

Не буду делать У вас есть столбец string / char [], и заказ, который вы ищете, работает только на числа.
Вам нужно преобразовать этот столбец в числа, если это возможно.

Вы можете использовать приведение:

CAST(mail.titre,int)

Примеры здесь:
Преобразование текстового столбца в целое число в MySQL

3

Насколько я вижу, поле представляет собой varchar / text … Так что, чтобы отсортировать их правильно, вам нужно будет привести это поле (если возможно)

Пример:

SELECT * FROM mail WHERE titre LIKE '%$mot%' ORDER BY CAST(mail.titre AS int) ASC
1
По вопросам рекламы [email protected]