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

  • Автор темы Автор темы panika
  • Дата начала Дата начала

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 чтобы сортировалось по числу в строке а не по идущим символам.
 
Не задумывался, почему эта колонка varchar?
 
Если бы не было так лень потестил бы. А так.. Может сработает что-то вроде этого:

SELECT * FROM `files` ORDER BY LENGTH(`name`) ASC, `name` ASC
 
а как насчёт смены типа поля на идеологически верный?
 
а, ёмаё. каюсь, был невнимателен. колонка со строкой "Name - 1"
отбой :-)
 
http://www.opennet.ru/base/dev/mysql_types.txt.html
вот нашел типы полей, логики никакой не увидел.

-~{}~ 18.12.09 16:23:

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