sortowanie wg kilku pól CHAR zawierających liczby

0

Chcę zwracane wyniki sortować w kolejności pól:obwód+nr_sasiada
Są tam numery, jednak wiadomo, że wyniki wyglądają tak:
1
11
121
2
23
Użycie CONVERT(sasiedzi.nr_obwodu, DECIMAL(5,0)) albo CAST załatwia sprawę prawidłowo, jednak problem ponownie się pojawia, gdy próbuję uzyskać prawidłowe sortowanie wg klucza będącego połączeniem dwóch takich pól:

ORDER BY CONCAT(CONVERT(sasiedzi.nr_obwodu, DECIMAL(5,0)),"/",CONVERT(sasiedzi.nr_sasiada,DECIMAL(5,0))); 

Rozwiązałem go tak:

 ORDER BY CONVERT(sasiedzi.nr_obwodu, DECIMAL(5,0))*1000+CONVERT(sasiedzi.nr_sasiada,DECIMAL(5,0))

co działa prawidłowo, jednak ciekawi mnie, czy jest bardziej poprawne rozwiązanie?

0
ORDER BY CONVERT(sasiedzi.nr_obwodu, DECIMAL(5,0)), CONVERT(sasiedzi.nr_sasiada,DECIMAL(5,0))

ale jest to do d**y bo nie używa indeksu - czemu trzymasz dane liczbowe w polach tekstowych?

0
Misiekd napisał(a)

ale jest to do d**y bo nie używa indeksu - czemu trzymasz dane liczbowe w polach tekstowych?

Bo w pierwszej fazie w polu znajduje się kilka wartości odczytanych z pliku i dopiero potem ktoś to porządkuje. Na szczęście to są niewielkie bazy, więc strata dziesiątych części sekundy nie jest dokuczliwa - czyli nie opłaca się przenosić do innych pól.

1 użytkowników online, w tym zalogowanych: 0, gości: 1