Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ich erhalte doppelte Ergebnisse von der MySQL-Abfrage, wenn ich internationale Zeichen verwende, d. h. Å/Ä=A &Ö=O,

Ihr "Problem" ist der utf8_unicode_ci Kollation. Diese Sortierung führt "Zeichenerweiterungen" durch, was bedeutet, dass Umlaute und ihre Basiszeichen selbst in einem = als gleich behandelt werden Vergleich :

A = Ä
O = Ö
...

Das zweite Beispiel auf dieser mySQL-Handbuchseite erklärt das Problem:9.1.7.8. Beispiele für den Effekt der Sortierung

Dazu müssten Sie entweder auf eine Kollatierung umstellen, die Umlaute und Basiszeichen unterscheidet (z.B. utf8_general_ci oder utf8_general_bin ) oder wechseln Sie nur während des Vergleichs zu einer anderen Sortierung:

select * from users where username like 'Björn' COLLATE utf8_general_ci;

dies ist offensichtlich langsamer, da die Sortierungskonvertierung für jeden Datensatz während der Abfrage durchgeführt werden muss.