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

Числа SQL ORDER

У меня есть столбец чисел, хранящихся в виде символов. Когда я делаю ORDER BY для этого столбца, я получаю следующее:

100
131
200
21
30
31000
и др.

Как я могу упорядочить эти символы численно? Нужно ли мне что-то конвертировать или для этого есть команда или функция SQL?

Спасибо.

4b9b3361

Ответ 1

Попробуйте следующее:

ORDER BY CAST(thecolumn AS int)

Ответ 2

Это работало для меня:

ORDER BY ABS(column_name)

Ответ 3

Это проблема с упорядочением числовых строк в "естественном порядке" (если вы посмотрите "естественную сортировку" в Google, вы найдете массу вещей). По существу, литье строки в виде int и сортировка по полученному значению должны ее исправить.

Ответ 4

Причиной этого является то, что с типом данных char вы сортируете строки как строку.

Идея ORDER BY CAST() правильная, однако ее производительность будет уменьшаться по мере увеличения количества возвращаемых результатов.

Если в этом столбце будут указаны только числовые данные, наилучшей практикой будет поиск подходящего численного типа данных и его изменение.

Если вы действительно не можете изменить столбец, и у вас возникли проблемы с производительностью, я предлагаю иметь столбец порядка сортировки, который содержит значение, отличное от целого (будет нуль преобразован в соответствующее значение).

Укажите столбец порядка сортировки и, в идеале, добавьте триггер в столбец char, чтобы вставки или обновления значения char вызывали обновление целочисленного значения.

Ответ 5

В некоторых ситуациях это может быть хорошим совпадением:

ORDER BY LENGTH(column_name), column_name

Особенно, если у вас есть столбец со всеми цифрами или набором букв и цифр, но все с одинаковой длиной.