2013-03-05 11 views
10

Czy ktoś wie, czy istnieje sortowanie utf8_unicode_cs dla MySQL? Jak dotąd moje wyszukiwania wyszły na sucho. Jeśli po prostu jeszcze nie istnieje, czy jest całkiem proste stworzenie takiego? Lub w jakiś sposób użyć utf8_unicode_ci lub utf8_bin, ale "zasymulować", czego można się spodziewać po zestawieniu utf8_unicode_cs?Czy istnieje zestawienie utf8_unicode_cs?

Odpowiedz

11

Natknąłem się na tę samą kwestię i po kilku badaniach Googling wygląda na to, że MySQL go nie uwzględnia. Do "zasymulować", jak to ująłeś,

1) do zapewnienia uwzględniania wielkości liter w DB: ustawić kolumnę tabeli do utf8_bin zestawień
Pozwala to:

  • ścisłe wybiera: SELECT "Joe" NIE zwróci wierszy z "joe"/"joE"/"jOe"/etc
  • strict UNIQUE index: kolumna z indeksem UNIQUE potraktuje różnice wielkości liter jako różne wartości. Na przykład, jeśli używana jest metoda utf8_unicode_ci, wstawienie "Joe" w tabeli, która już ma "joe", spowoduje błąd "Powiel klucz". Jeśli użyto ut8_bin, wstawianie "Joe" będzie działało dobrze.

2) Aby uzyskać właściwą kolejność w wynikach: dodać sortowania do kwerendy SQL:

SELECT ... ORDER BY column COLLATE utf8_unicode_ci