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

start [/forum/topic.php?fid=47&msg=32862227&tid=1831514]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
191ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 521ms |

| 0 / 0 |
