ORDER BY CAST(field_name AS UNSIGNED) ASC
Сортировка результата SQL-запроса по полю, как по числовому значению, а не как по строковому, выполняется с помощью MySQL-функции преобразования типов CAST() (см. выше).
Таким образом, мы как бы, предварительно преобразовываем string в integer.
Пример использования:
Допустим мы имеем таблицу «models» с данными:
name | speed |
---|---|
модель А | 3 минуты |
модель Б | 1 минута |
модель В | 20 минут |
Если мы отсортируем по полю «speed», (как по строковому (string)), мы получим такой результат:
SELECT *
FROM models
ORDER BY speed ASC
name | speed |
---|---|
модель Б | 1 минута |
модель В | 20 минут |
модель А | 3 минуты |
Этот результат sql-выборки корректный с точки зрения логики сортировки строк, но не корректный для восприятия человека. Переписав запрос с преобразованием поля в численное значение, по которому сортируем — мы получим логичный для восприятия результат:
SELECT *
FROM models
ORDER BY CAST (speed AS UNSIGNED) ASC
name | speed |
---|---|
модель Б | 1 минута |
модель А | 3 минуты |
модель В | 20 минут |
Для бизнес-логики бывает иногда полезно