http://dev.blogi.lublin.com.pl

[PHP] Sortowanie polskich znaków w mysql

Piątek 09.05.2008, 13:49:06

 

Ot i znalazł się problem. Niby nic takiego, ale 2 godziny z życiorysu wyjęte. Otóż pracując nad stroną konkursu WirtualnaMiss.pl trafiłem na dość ponoć popularny, ale za to niezbyt dobrze opisany na forach objaw:

podczas sortowania danych pobranych z bazy MySQL w porzadku alfabetycznym, teksty zaczynające się polskimi znakami diakrytycznymi (tzw. ogonkami) zależnie od kolejności sortowania pojawiają się na końcu lub na początku listy, zamiast tam gdzie powinny.

Przykładowe zapytanie:

mysql_query("SELECT * FROM names ORDER BY name ASC");

powinno zwrócić posortowaną alfabetycznie listę nazwisk. Tak jednak nie jest. Tymczasem rozwiązanie jest banalnie proste. Zakładając, że baza jest w UTF8, wystarczy zmodyfikować powyższe zapytanie w następujący sposób:

mysql_query("SELECT * FROM names COLLATE utf8_polish_ci ORDER BY name ASC");

To wszystko! Oczywiście zależnie od użytego w bazie danych kodowania utf8_polish_ci trzeba zastąpić odpowiednią definicją.

 

 



Komentarze(0)



Liczba wizyt: 2284
Liczba wpisów: 2
Liczba komentarzy: 1

O mnie
Księga gości
RSS


  • Styczeń 2009
  • Grudzień 2008
  • Listopad 2008
  • Październik 2008
  • Wrzesień 2008
  • Sierpień 2008
  • Lipiec 2008
  • Czerwiec 2008
  • Maj 2008
  • Kwiecień 2008
  • Marzec 2008
  • Luty 2008
  • Styczeń 2008
  • Grudzień 2007