У меня есть столбец типа varchar, который хранит много разных чисел. Скажем, например, есть 3 строки: 17.95, 199.95 и 139.95.Как я могу сортировать это поле как числа в mysql
Номер строки сортировки mysql
Ответ 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
, в первую очередь. Затем он может быть правильно проиндексирован для лучшей производительности.
Ответ 6
Этот подход полезен при сортировке текста в виде чисел:
SELECT `my_field`
FROM `my_table`
ORDER BY `my_field` + 0;
Нашел решение на http://crodrigues.com/trick-mysql-order-string-as-number/.