Сортировка по полю, как по числовому значению

2010-06-13


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 минут

 



Один комментарий на «Сортировка по полю, как по числовому значению»

  1. startanull.ru:

    Для бизнес-логики бывает иногда полезно

Добавить комментарий