powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / "Натуральная" сортировка
11 сообщений из 11, страница 1 из 1
"Натуральная" сортировка
    #32857574
Argentum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как сделать так, чтобы SELECT возвращал записи отсортированные (по строковой колонке) в "натуральном" порядке, т.е. не
1
10
11
2
21
22
3

а
1
2
3
10
11
21
22
...
Рейтинг: 0 / 0
"Натуральная" сортировка
    #32857592
Boik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT * FROM table ORDER BY столбец ASK;
...
Рейтинг: 0 / 0
"Натуральная" сортировка
    #32857604
Argentum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
Я лентяй, конечно, но сам нашёл ответ.
Вот так нужно было:
mysql> select number from (table) order by (number+0);
...
Рейтинг: 0 / 0
"Натуральная" сортировка
    #32858748
Guest123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Argentum, ваш вариант не совсем корректен - если в столбце появится хоть одно символьное значение, то вместо результата запроса получится ошибка.

Правильней в таком случае получится запрос вида:
select number from (table) order by RIGHT(CONCAT('00'+number),3);
...
Рейтинг: 0 / 0
"Натуральная" сортировка
    #32858750
Guest123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, поторопился:
select number from (table) order by RIGHT(CONCAT('00',number),3);
...
Рейтинг: 0 / 0
"Натуральная" сортировка
    #32858779
sky2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest123Argentum, ваш вариант не совсем корректен - если в столбце появится хоть одно символьное значение, то вместо результата запроса получится ошибка.

Правильней в таком случае получится запрос вида:
select number from (table) order by RIGHT(CONCAT('00'+number),3);

почему ошибка?
select '123qwerty' + 0
выведет 123
...
Рейтинг: 0 / 0
"Натуральная" сортировка
    #32861579
Guest123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все верно, sky2k, в результате запроса будет получено именно "123", а не "123qwerty" - это разве является правильным результатом выполнения (представь, что в таблице есть и "123" и "123qwerty" и тебе надо различать эти записи)
...
Рейтинг: 0 / 0
"Натуральная" сортировка
    #32862227
sky2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest123в результате запроса будет получено именно "123", а не "123qwerty"

неправда
сравни запросы
из топика: select number from (table) order by (number+0);
запрос удовлетворяющий сказаному вами: select (number+0) as XXX from (table) order by XXX;
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
"Натуральная" сортировка
    #39288172
Artemeey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы учитывались буквы после числе, достаточно добавить сортировку по строковому представлению:
SELECT string FROM (table) order by (string+0), (string);
...
Рейтинг: 0 / 0
"Натуральная" сортировка
    #39288178
Artemeey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы учитывались буквы после чисел, достаточно добавить сортировку по строковому представлению:
SELECT string FROM (table) ORDER BY (string+0), (string);

В таком случае сначала все отсортируется по числовому представлению ячеек, а в случае равенства приведения сортировка продолжится по строковому представлению ячеек.
...
Рейтинг: 0 / 0
"Натуральная" сортировка
    #39288212
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / "Натуральная" сортировка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]