Cytat(AxZx @ 5.09.2006, 18:02:19 )

witam
chce sortowac kolumny z nazwami wojewodztwa wg jego nazwy
dlaczego łódzkie jest na koncu? za zachodniopomorskim?
kodowanie tabeli utf-8
wersja mysql:
4.1.21-log
zapytanie:
CREATE TABLE `wojewodztwa` (
`woj_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`woj_nazwa` varchar(45) character SET utf8 collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`woj_id`),
UNIQUE KEY `unikalna` (`woj_nazwa`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Wysilę się dla potomych, bo sam jakiś czas szukałem rozwiązania lepszego niż zmiana kodowania kolumny w tabeli z utf8_general_ci na utf_polish_ci.
Jeśli robisz zapytanie w postaci:
SELECT * FROM `wojewodztwa` WHERE 1 ORDER BY `nazwa`
to wynik dostaniesz w kodowaniu takim jak masz zakodowaną kolumnę `nazwa`. Czyli w utf8_general_ci polskie znaki będziesz miał inaczej niż się przyjęło w polskim alfabecie. Np. 'Ł' za 'Z', czy 'Ż' i 'Z' w tym samym miejscu.
Z pomocą przychodzi COLLATE dla zapytania:
SELECT * FROM `wojewodztwa` WHERE 1 ORDER BY `nazwa` COLLATE utf8_polish_ci
teraz nie ważne jest jak masz zakodowane dane w bazie, bo i tak wynik będzie w utf_polish_ci, a resztę możesz mieć cyrylicą i doklejać do siebie wyniki w różnych alfabetach.
Jeśli chcesz czytać z php wyniki, to nie zapomnij o ustawieniu zaraz za połączeniem z bazą "set names utf8", bo dostaniesz krzaki.