|
|
|
| В таблице выводятся имена файлов страниц с помощью запроса
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)
|
| |
|
|
|