2012-01-03 15 views
5

Próbuję posortować tabelę zawierającą znaki greckie. Odpowiednia angielska wersja tabeli jest sortowana (zarówno ASC i DESC) dobrze, za każdym razem, gdy klikniesz na nagłówek tabeli.Sortowanie nazw innych niż angielskie za pomocą MySQL

Szukałem na greckich forach, a jedynym proponowanym rozwiązaniem jest użycie ORDER BY BINARY. W rzeczywistości wiele osób twierdziło, że użycie porządku binarnego rozwiązało problem. Niestety, w moim przypadku tak nie jest. Wiem, że ten sam problem występuje w językach takich jak niemiecki, gdzie użycie umlautów zakłóca porządek i ogólnie w językach o specjalnych znakach. Jeśli ktoś ma pomysł jak przezwyciężyć ten problem, byłbym wdzięczny.

+1

Z tego co wiem z hebrajskim, w językach innych niż łacińskie są klasyfikowane według ich ASCII (lub Unicode) wskaźnik, który generalnie powinien działać z języków takich jak Grecki. Więc nie widzę, gdzie leży problem. Czy mógłbyś skupić się na swoim pytaniu? –

+0

Zmieniłem twój tag [tag: PHP] na [tag: MySQL], ponieważ nie ma to nic wspólnego z PHP. Czy mogłabyś podać przykład czegoś, co źle się nie układa? Tylko kilka nazwisk. Co to jest [charset] (http://dev.mysql.com/doc/refman/5.0/en/charset.html)? – kba

+0

Problem polega na tym, że nie dostaję właściwej kolejności. Na przykład słowa zaczynające się od A, które są nawet w języku greckim pierwszą literą alfabetu, pojawiają się prawie na końcu mojego stołu. Nie jestem ekspertem od PHP i teraz zastanawiam się, czy zestawienie tabeli jest problemem? – user926652

Odpowiedz

2

Zgodnie z a thread on forums.mysql.com, w MySQL 6.0, możesz sortować greckie nazwy, jeśli zestaw znaków twojej tabeli jest ustawiony na utf8_general_ci.

create table t (s1 char(1) character set utf8 collate utf8_general_ci); 
insert into t values ('Α'),('Β'),('Γ'),('Δ'),('Ε'),('Ζ'); 
select * from t order by s1; 

Powyższy powinien powrócić

+----+ 
| s1 | 
+----+ 
| Α | 
| Β | 
| Γ | 
| Δ | 
| Ε | 
| Ζ | 
+----+ 
+0

Używam MySQL 5.1.53. Sugerujesz, że powinienem uaktualnić go do najnowszego? – user926652

+0

@ user926652, to nie działa na MySQL 5.1.x, ale działa na MySQL 6 - To wszystko, co mogę powiedzieć. Niezależnie od tego, czy powinieneś uaktualnić, nie mogę powiedzieć. Wygląda na to, że znajduje się we wczesnej fazie rozwoju, więc może nie być dobrym pomysłem - ale rozwiąże ten problem. – kba

Powiązane problemy