| |
|
|
| | В таблице выводятся имена файлов страниц с помощью запроса
mysql_query("SELECT * FROM bot_korn ORDER BY CAST(str as UNSIGNED) ");
|
Вывод имеет такой вид:
0.htm (первый знак ноль)
index.htm
li.htm
1.htm
2.htm
3.htm
А желательно иметь традиционную сортировку - прежде числа по возрастанию, а за ними слова по алфавиту. Например:
0.htm (первый знак ноль)
1.htm
2.htm
3.htm
index.htm
li.htm
Такой запрос возможен? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(15.03.2009 в 13:30)
| | |
SELECT * FROM bot_korn ORDER BY `str`;
|
| |
| |
|
|
| |
|
|
| |
для: Root
(16.03.2009 в 12:05)
| | | Я с этой конструкции и начал, но это совершенно не то, что нужно, ибо здесь получается так:
0.htm
1.htm
10.htm
11.htm
2.htm
А требуется сортировка в человеческом стиле: числа по нарастанию, затем буквы по алфавиту. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(16.03.2009 в 13:02)
| | | так и сортируется. В соответствии с правилами сортировки строк... то есть посимвольно. | |
| |
|
|
| |
|
|
| |
для: Loki
(16.03.2009 в 14:08)
| | | Вы хотите сказать, что в базе не предусмотрен механизм сортировки по "человеческим" законам? И что единственный выход - написание соответствующего кода на рнр? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(16.03.2009 в 14:41)
| | | Попробуйте поискать информацию по "natural ordering". Если не получится, то придется сортировать на php | |
| |
|
|
| |
|
|
| |
для: Владимир55
(16.03.2009 в 14:41)
| | | Такая функция имеется в PHP, в СУБД строки сортируются как строки, а не как числа. | |
| |
|
|
| |
|
|
| |
для: cheops
(16.03.2009 в 16:30)
| | | Спасибо, теперь всё понятно!
А то я никак не мог принять того факта, что столь интеллектуальный язык не имеет такого весьма нужного свойства... | |
| |
|
|
| |
|
|
| |
для: Владимир55
(15.03.2009 в 13:30)
| | | как вариант можно попробовать:
SELECT * FROM bot_korn ORDER BY CAST( SUBSTRING_INDEX(str,'.',1) as UNSIGNED)
|
| |
| |
|
|