Sortowanie pola String jako Number

Witam!

Mam w bazie kolumnę “moja_kolumna”, która jest typu String. Jako, że każdy z tych string-ów zaczyna się od numeru chcę to posortować numerycznie. W tej chwili mam coś takiego:

@infos = Info.find(:all, :order => "moja_kolumna")

to oczywiście sortuje mi wg tego domyślnego typu, czyli nie są to efekty jakich potrzebuję.

Będę wdzięczny za wszelka pomoc i wskazówki!

Posortuj wedlug wartosci zwroconej przez funkcje abs.@infos = Info.find(:all, :order => "abs(moja_kolumna)")
Jezeli jestes bardziej wymagajacy (na przyklad liczba moze byc ujemna) mozesz rowniez zrzutowac wartosc na inny typ (szczegoly). Na przyklad: @infos = Info.find(:all, :order => "cast(moja_kolumna as unsigned)")

Nie wiem jak to zrobić w SQLu, ale jeżeli każdy string zaczyna się od numeru, to nie lepiej było zrobić 2 kolumny, w jednej trzymać numer, w drugiej stringa i dodać jakąś metodę do modelu w której połączysz ten numer ze stringiem?

drogus: Może z tym “każdy” to przesadziłem, gdyż mogą się trafić takie, które nie maja tego numerka na początku (będzie ich mało), jednak mimo wszystko chcę sortować to jako liczby.
Generalnie są takie dwie wersje:

"N S" "S"
N - Number
S- String

Dzięki za pomoc! :slight_smile: