Twoim „problemem” jest utf8_unicode_ci
porównanie. To porównywanie wykonuje „rozwijanie znaków”, co oznacza, że umlauty i ich znaki podstawowe są traktowane jako takie same nawet w =
porównanie :
A = Ä
O = Ö
...
Drugi przykład na tej stronie podręcznika mySQL wyjaśnia problem:9.1.7.8. Przykłady efektu sortowania
Musisz albo przełączyć się na sortowanie, które rozróżnia znak umlautowy i podstawowy (np. utf8_general_ci
lub utf8_general_bin
) lub przełącz się na inne zestawienie tylko podczas porównywania:
select * from users where username like 'Björn' COLLATE utf8_general_ci;
jest to oczywiście wolniejsze, ponieważ konwersja sortowania musi być wykonana dla każdego rekordu podczas zapytania.