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

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

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

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

 select * from tbl order by number_as_char * 1 

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

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

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

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

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

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

 ORDER BY LPAD(`column`,,"0") 

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

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

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

Этот подход полезен при сортировке текста в виде чисел:

 SELECT `my_field` FROM `my_table` ORDER BY `my_field` + 0; 

Нашел решение на http://crodrigues.com/trick-mysql-order-string-as-number/ .

  • Как создать индекс в части даты поля DATETIME в MySql
  • Являются ли динамические запросы mysql с sql-экранированием столь же безопасными, как и подготовленные операторы?
  • Как избежать одиночных кавычек в MySQL
  • Как удалить дубликаты в таблице MySQL?
  • Является ли первичный ключ автоматически индексированным в MySQL?
  • base64 кодируется в MySQL
  • Ранг () над разделом в mysql
  • mysql error 1364 Поле не имеет значений по умолчанию
  • Как хранить GUID в таблицах MySQL?
  • Можно ли выполнить строку в MySQL?
  • Как resize max_allowed_packet
  • Interesting Posts
    Давайте будем гением компьютера.