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

MySQL behandelt ı nicht als i?

Verweis auf http://mysql.rjweb.org/utf8_collations.html , sehe ich, dass ı=i in 3 Sortierungen:utf8_general_ci, utf8_general_mysql500_ci, utf8_turkish_ci. Für die türkische Sortierung jedoch I=ı sortiert vor anderen akzentuierten I's. In allen anderen Sortierungen ı sortiert nach allen I's, als ob es als separater Buchstabe behandelt würde.

Inzwischen İ=I in allen Sortierungen außer utf8_turkish_ci.

Die Handlung verdichtet sich mit MySQL 8.0. utf8mb4_tr_0900_ai_ci (nur) hat diese Reihenfolge:

I=Ì=Í=Î=Ï=Ĩ=Ī=Ĭ=Į=ı sort before  i=ì=í=î=ï=ĩ=ī=ĭ=į=İ

Dabei ä=Ä und sie stimmen mit den meisten anderen akzentuierten A für die meisten Sortierungen (einschließlich der türkischen) überein.

Fazit:Es scheint, dass utf8[mb4]_general_ci die einzige Sortierung in 5.7 oder 8.0 ist, die ein punktloses i (oder gepunktetes I) immer gleich einem 'regulären i/I und gleichzeitig Umlaute ignorieren.

Vorbehalt:Die "allgemeinen" Sortierungen testen nicht mehr als ein Zeichen gleichzeitig. Das heißt, ein "Nicht-Zwischenraum-Umlaut" plus ein Vokal werden der Kombination nicht gleichgestellt.

In diesem Link... Das eine Zeichen æ ist genauso sortiert wie die beiden Buchstaben ae für einige Kollationen. Dies wird angezeigt durch:Aa ae=æ az . In etwa der Hälfte der anderen Sortierungen das Zeichen æ wird als separater Brief behandelt; dies wird dadurch angezeigt, dass es nach az steht und vor b . Oder sogar nach zz für skandinavische Sortierungen. Dieses getrennte Buchstabenkonzept gilt manchmal für Buchstabenpaare, zum Beispiel cs (Ungarisch) und ch (traditionelles Spanisch).