Привет, так решил написать размышления по поводу, может у кого есть что добавить.
У меня на сайте есть место где - нужно выводить отсортированные списки, много списков, хранятся они в БД в varchar`ах. Некоторые из них могут начинаться с цифр, типа такого (но там же есть строки и без цифр):
Начальный уровень
1 уровень
2 уровень
...
10 уровень
Последний уровень
Если сделать такой список ORDER BY `name` то он выведет:
1 уровень
10 уровень
2 уровень
...
Что не есть хорошо конечно, но существуют варианты:
Например, можно ввести доп. столбец с порядком вывода, но если списки могут дополнятся придется сдвигать и постоянно их пересортировывать.
Еще varchar поле представляют, как числовое типа:
ORDER BY `name`+0, чтоб отсоритровать как бы цифры, но это тоже не выход т.к. неправильно отобразит похожие строчки.
Или
ORDER BY LENGTH(name), name;//добавляют длинну значения поля
Или
ORDER BY RIGHT(CONCAT('00',number),3);
Но все же это все через Ж.
Либо некорректные результаты, либо неприемлемо долго.
Короче, пришел к выводу (особенно элементов не так много) спасет natcasesort - сортировка ручками на уровне php.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.