Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] ORDER BY dla liczb ze stringiem
elmozaur
post
Post #1





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
kreatiff
post
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

Ostrzeżenie: (0%)
-----


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

Ten post edytował kreatiff 4.05.2015, 12:18:21
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 13:36