marekfan
10.12.2008, 11:48:24
Witam
Mam w bazie pole typu INTEGER w którym jest zapisany numer nip.
Jak posortowac potym polu żeby porządek był tak jakby to pole było tekstowe
Pozdrawiam
nevt
10.12.2008, 11:58:28
o ile to MySQL:
SELECT * FROM `tabela` ORDER BY CAST(`pole_liczbowe` AS CHAR);
bob1223
14.01.2009, 22:13:08
A jak posortować takie przykładowe rekordy
Adam 1
Adam 12
Adam 2
Adam 8
na
Adam 1
Adam 2
Adam 8
Adam 12
ASC nie działa
dr_bonzo
14.01.2009, 22:19:24
A jak bardzo dokladny jest to przyklad? Masz w bazie inne stringi niz "Adam" ile jest spacji po imieniu itp?
Bo chyba nie ma funkcji do "naturalnego sortowania" - a majac pewne ograniczenia mozna to sprytnie inaczej zapisac
bob1223
14.01.2009, 22:27:42
Tabela wygląda tak:
id, siec, nazwa
-----------------
1, 1, Wyszynskiego 1
2, 1, Wyszynskiego 2
3, 1, Broniewskiego 1
4, 1, Broniewskiego 3
5, 1, Broniewskiego 5,
6, 1, Broniewskiego 7,
7, 1, Broniewskiego 9,
8, 1, Broniewskiego 11
9, 1, Sportowa 2
i już będzie problem z budynkiem o nazwie Broniewskiego 11
zegarek84
14.01.2009, 22:59:14
tylko jaką masz baze danych??
jesli mysql to zbiór wszystkich potrzebnych funkcji operujących na stringu masz tutaj:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.htmljesli baza jest w sqlite to tam można łatwo implementować funkcje z php i następnie obrobić string
takie sortowanie nawet dużo bardziej złożone od tego co się pytasz wykonywałem na forumexcel.pl..... napiszę tylko tyle, że musisz poszukać ostatniej spacji gdyż nazwa ulicy może być dwuczłonowa i więcej - i od tej ostatniej spacji wycinasz nazwe ulicy i osobno numer domu.... i sortujesz najpierw po wyciętej nazwie ulicy a następnie po wyciętym numerze domu
nevt
15.01.2009, 09:02:30
można dużo prościej:
SELECT * FROM `tabela` ORDER BY BINARY `nazwa`;