Сортировка по текстовому полю

Novice

Новичок
Сортировка по текстовому полю

Есть таблица с текстовым полем (VARCHAR, TEXT,...), в котором хранятся числа (INTEGER). Как выбрать записи, отсортированные по этому полю?

Понятно, что ORDER BY не катит, так как '25' < '9'
 

Novice

Новичок
Originally posted by Popoff
хранить числа в подходящего типа поле
Прекрасно это понимаю, но так уж исторически сложилось, что атрибуты сущностей хранятся в таблице типа

id (foreign key) var(CHAR) value (TEXT)
-------------------------------------------------------
1 | descr | bla-bla-bla...
1 | content | sdfsdfsg.....
1 | rating | 12
2 | descr | blo-blo-blo...
2 | content | ghjkhukh.....
2 | rating | 15
........

вот и надо отсортировать записи по rating.
 

caxapok

Guest
Имхо, лучше переделать "исторически сложившуюся" структуру по-нормальному, чем делать "урода на костылях"
 

Yurik

/dev/null
caxapok: если проблему не создать, не будет чего решать ;)
 

Popoff

popoff.donetsk.ua
выравнять длину всех строк добавлением нулей слева.

-~{}~ 04.02.05 20:09:

сортировать после того, как достал из базы
 

Novice

Новичок
Переделывать структуру я за%бусь. Так уж устроено в оной цмс, и поэтому много чего заточено под такую структуру.

Нету что-то типа приведения типов в мускле? Просто не хочеться руками сортировать массив средствами пхп....

ALTER TABLE ? Там ошибка в запросе или ты предлагаешь поменять тип на инт?
 

Popoff

popoff.donetsk.ua
Novice
приведенная тобой структура, конечно же, имеет право на существование, но она, мягко говоря, ужасна. рефракторинг может решить не только эту проблему, но и много других, которые могут встать перед тобой в будущем. этот тот случай, когда потратишь на рефракторинг на два дня больше сейчас - сэкономишь месяц потом + избавишь себя от головной боли. поэтому - рекомендую.

но если все же тебе так сильно не хочится заниматься рефракторингом, то есть еще один способ: order by 0+value
 

Novice

Новичок
Popoff, меня это вполне устраивает :)
В данной ситуации рефакторинг будет очень дорого стоить, так как смотря на такую организацию БД, можешь представить как организовано все другое и как написаны скрипты. Тут просто надо добавить такую штуку и забыть.

Спасибо.
 
Сверху