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

MySQL-Sortierung zum Speichern mehrsprachiger Daten unbekannter Sprache

Sie sollten eine Unicode-Sortierung verwenden. Sie können es standardmäßig auf Ihrem System oder für jedes Feld Ihrer Tabellen festlegen. Es gibt die folgenden Unicode-Sortierungsnamen, und dies sind ihre Unterschiede:

utf8_general_ci ist eine sehr einfache Sortierung. Es entfernt einfach alle Akzente, wandelt es dann in Großbuchstaben um und verwendet den Code dieser Art von "Basisbuchstaben"-Ergebnisbuchstaben zum Vergleichen.

utf8_unicode_ci verwendet die standardmäßige Unicode-Sortierungselementtabelle.

Die Hauptunterschiede sind:

  1. utf8_unicode_ci unterstützt sogenannte Erweiterungen und Ligaturen, zum Beispiel:Der deutsche Buchstabe ß (U+00DF BUCHSTABE S) wird neben "ss" sortiert. Der Buchstabe Œ (U+0152 LATIN CAPITAL LIGATURE OE) wird neben "OE" sortiert.

utf8_general_ci unterstützt keine Erweiterungen/Ligaturen, es sortiert all diese Buchstaben als einzelne Zeichen und manchmal in der falschen Reihenfolge.

  1. utf8_unicode_ci ist allgemein genauer für alle Skripte. Zum Beispiel im kyrillischen Block:utf8_unicode_ci ist für alle diese Sprachen geeignet:Russisch, Bulgarisch, Weißrussisch, Mazedonisch, Serbisch und Ukrainisch. Während utf8_general_ci nur für die russische und bulgarische Untergruppe von Kyrillisch geeignet ist. Zusätzliche Buchstaben, die in Weißrussisch, Mazedonisch, Serbisch und Ukrainisch verwendet werden, werden nicht gut sortiert.

+/- Der Nachteil von utf8_unicode_ci ist, dass es etwas langsamer ist als utf8_general_ci.

Abhängig davon, ob Sie wissen oder nicht, welche spezifischen Sprachen/Zeichen Sie verwenden werden, empfehle ich Ihnen, utf8_unicode_ci zu verwenden, das eine umfassendere Abdeckung bietet.