Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] ORDER BY dla liczb ze stringiem
Forum PHP.pl > Forum > Przedszkole
elmozaur
Witajcie.
Problem jest taki:
mam kolumne w ktorej dane maja format 'a1_1', 'a1_2', 'a1_3' itd.
Chcialbym teraz aby przy robieniu selecta dane byly sortowane po tej kolumnie i tu robi sie problem gdyz dostaje coś takiego:
a1_1
a1_10
a1_11
a1_12
a1_2
a1_21
a1_3
itd

a chcialbym:
a1_1
a1_2
a1_3
a1_10
a1_11
a1_12
a1_21
itd.

Typ kolumny musi byc varchar. Zastanawiałem sie nad rozbiciem tego na 2 kolumny tak aby liczenie bylo po intach ale wtedy reszta już istniejącej aplikacji sie rozsypie.
Mogę też wrzucić wszystko do tablicy php i posortowac wynik po użyciu exploda ale to mało wydajne rozwiązanie. Czy na poziomie samego SQLa mozna jakąś funkcją przesortować tego typu dane ?

pozdrawiam
Grzegorz

wygooglało mi się coś takiego - gdyby ktoś szukał

  1. ORDER BY CAST(SUBSTR(bid FROM 4) AS UNSIGNED) ASC
kreatiff
Czyli sortowanie naturalne, sprawdź czy to co tutaj jest podane zadziała u Ciebie: http://www.copterlabs.com/blog/natural-sorting-in-mysql/
W php to można zrobić szybko, za pomocą natsort();, w MYSQL trzeba pokombinować. Zobacz też tutaj: http://stackoverflow.com/questions/8557172...meric-correctly
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.