
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
10.01.2005, 14:43
|
|||
|---|---|---|---|
|
|||
"Натуральная" сортировка |
|||
|
#18+
Как сделать так, чтобы SELECT возвращал записи отсортированные (по строковой колонке) в "натуральном" порядке, т.е. не 1 10 11 2 21 22 3 а 1 2 3 10 11 21 22 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2005, 14:51
|
|||
|---|---|---|---|
|
|||
"Натуральная" сортировка |
|||
|
#18+
SELECT * FROM table ORDER BY столбец ASK; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2005, 15:03
|
|||
|---|---|---|---|
|
|||
"Натуральная" сортировка |
|||
|
#18+
Спасибо! Я лентяй, конечно, но сам нашёл ответ. Вот так нужно было: mysql> select number from (table) order by (number+0); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.01.2005, 12:09
|
|||
|---|---|---|---|
"Натуральная" сортировка |
|||
|
#18+
Argentum, ваш вариант не совсем корректен - если в столбце появится хоть одно символьное значение, то вместо результата запроса получится ошибка. Правильней в таком случае получится запрос вида: select number from (table) order by RIGHT(CONCAT('00'+number),3); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.01.2005, 12:11
|
|||
|---|---|---|---|
"Натуральная" сортировка |
|||
|
#18+
Извиняюсь, поторопился: select number from (table) order by RIGHT(CONCAT('00',number),3); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.01.2005, 12:25
|
|||
|---|---|---|---|
"Натуральная" сортировка |
|||
|
#18+
guest123Argentum, ваш вариант не совсем корректен - если в столбце появится хоть одно символьное значение, то вместо результата запроса получится ошибка. Правильней в таком случае получится запрос вида: select number from (table) order by RIGHT(CONCAT('00'+number),3); почему ошибка? select '123qwerty' + 0 выведет 123 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.01.2005, 16:15
|
|||
|---|---|---|---|
"Натуральная" сортировка |
|||
|
#18+
Все верно, sky2k, в результате запроса будет получено именно "123", а не "123qwerty" - это разве является правильным результатом выполнения (представь, что в таблице есть и "123" и "123qwerty" и тебе надо различать эти записи) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.01.2005, 00:35
|
|||
|---|---|---|---|
"Натуральная" сортировка |
|||
|
#18+
guest123в результате запроса будет получено именно "123", а не "123qwerty" неправда сравни запросы из топика: select number from (table) order by (number+0); запрос удовлетворяющий сказаному вами: select (number+0) as XXX from (table) order by XXX; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.08.2016, 11:40
|
|||
|---|---|---|---|
"Натуральная" сортировка |
|||
|
#18+
Чтобы учитывались буквы после числе, достаточно добавить сортировку по строковому представлению: SELECT string FROM (table) order by (string+0), (string); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.08.2016, 11:43
|
|||
|---|---|---|---|
"Натуральная" сортировка |
|||
|
#18+
Чтобы учитывались буквы после чисел, достаточно добавить сортировку по строковому представлению: SELECT string FROM (table) ORDER BY (string+0), (string); В таком случае сначала все отсортируется по числовому представлению ячеек, а в случае равенства приведения сортировка продолжится по строковому представлению ячеек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=stdob&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
180ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 723ms |
| total: | 1040ms |

| 0 / 0 |
