Оптимизация Order By по числам(int) в VARCHAR

panika

Новичок
Оптимизация Order By по числам(int) в VARCHAR

Вообщем колонка name имееет примерный вид:
Name - 1
Name - 2
Name - 3
...
Name - 10
Name - 11
...
Name - 400

Запрос
PHP:
$result = mysqli_query("SELECT * FROM `files` ORDER BY RIGHT `name` ASC");
выводит примерно следующее
Name - 1
Name - 10
Name - 11
Name - 2
Name - 3
Name - 400
...

Поискал в интернете нашел функцию MySQL Trim
PHP:
$result = mysqli_query("SELECT * FROM `files` ORDER BY RIGHT(SPACE(10) + TRIM(BOTH 'ABCDEFGHIKLMNOPQRSTVXYZabcdefghiklmnopqrstvxyz' FROM `name`), 10) ASC");
Но Это функция отсекает символы только в constant (константах - статических строках). поэтому не подходит.

Что же мне делать? Подскажите как оптимизировать ORDER BY для VARCHAR чтобы сортировалось по числу в строке а не по идущим символам.
 

Adelf

Administrator
Команда форума
Не задумывался, почему эта колонка varchar?
 

Adelf

Administrator
Команда форума
Если бы не было так лень потестил бы. А так.. Может сработает что-то вроде этого:

SELECT * FROM `files` ORDER BY LENGTH(`name`) ASC, `name` ASC
 

panika

Новичок
ты гений как до меня не дошло постоянно иду через анал
 

zerkms

TDD infected
Команда форума
а как насчёт смены типа поля на идеологически верный?
 

zerkms

TDD infected
Команда форума
а, ёмаё. каюсь, был невнимателен. колонка со строкой "Name - 1"
отбой :)
 

panika

Новичок
http://www.opennet.ru/base/dev/mysql_types.txt.html
вот нашел типы полей, логики никакой не увидел.

-~{}~ 18.12.09 16:23:

Я только все равно задаюсь вопросом а если будет так:
Name - 13
Name - 11-12
Логичнее будет сделать так чтобы сортировка была по символам от начала строки.Т.е. начинаеться число и мы видим 13 или 11-12, котрое меньше.
Если такое невозможно значит БД еще не развилось до этого уровня и мне не стоит мучаться.
 

zerkms

TDD infected
Команда форума
Если такое невозможно значит БД еще не развилось до этого уровня и мне не стоит мучаться.
с чего ты взял, что это "развитие", а не "деградация"?
 

panika

Новичок
не хочу фудить, но я имел ввиду доп возможности а не другой подход к сортировке.
 
Сверху