Подтвердить что ты не робот

Номер строки сортировки mysql

У меня есть столбец типа varchar, который хранит много разных чисел. Скажем, например, есть 3 строки: 17.95, 199.95 и 139.95.Как я могу сортировать это поле как числа в mysql

4b9b3361

Ответ 1

Используйте функцию CAST или CONVERT.

Ответ 2

Самый быстрый, самый простой? используйте * 1

select *
from tbl
order by number_as_char * 1

Другими причинами использования * 1 являются то, что он может

  • выдержать некоторые ужасающие неудачи с недостаточным потоком (уменьшенная десятичная точность при выборе того, что делать)
  • работает (и игнорирует) столбцы чисто нечисловых данных
  • разделяет числовые части буквенно-цифровых данных, таких как 123A, 124A, 125A

Ответ 3

Если вам нужно отсортировать столбец char , содержащий текст AND numbers, тогда вы можете сделать это.

tbl содержит: 2,10, a, c, d, b, 4,3

select * from tbl order by number_as_char * 1 asc, number_as_char asc

ожидаемый результат: 2,3,4,10, a, b, c, d

Если вы не добавите второй порядок по аргументу, будут отсортированы только цифры - текст фактически игнорируется.

Ответ 4

Поместите строку с ведущими нулями:

ORDER BY LPAD(`column`,<max length of string>,"0")

Ответ 5

Если вам действительно нужно это сделать, если ваши исходные данные совместимы:

SELECT column FROM table ORDER BY CAST(column AS DECIMAL(10,2))

Однако для больших наборов данных это будет не очень быстро. Если вы можете, вы должны изменить схему, чтобы использовать DECIMAL, в первую очередь. Затем он может быть правильно проиндексирован для лучшей производительности.