Beispiel für utf8mb4-Sortierung in MySQL

Beispiel für utf8mb4-Sortierung in MySQL

Allgemeine utf8mb4-Sortierregeln in MySQL sind:

  • utf8mb4_0900_ai_ci
  • utf8mb4_unicode_ci
  • utf8mb4_general_ci

Wenn der Standardzeichensatz einer Tabelle auf utf8mb4 eingestellt ist, die Sortierung jedoch nicht explizit angegeben ist:

  • In MySQL Version 5.7 ist die Standardsortierung utf8mb4_general_ci.
  • In MySQL Version 8.0 ist die Standardsortierung utf8mb4_0900_ai_ci.

Da die Sortierung utf8mb4_0900_ai_ci die in MySQL 8.0 eingeführte Sortierung ist, wird der Zeichensatz möglicherweise nicht erkannt, wenn Sie eine MySQL 8.0-Tabelle in MySQL 5.7 oder MySQL 5.6 importieren.

[Err] 1273 - Unbekannte Sortierung: „utf8mb4_0900_ai_ci“

Parametersteuerung

In MySQL Version 5.6 wird der Parameter collation_server verwendet, um die Standardsortierung auf Serverebene festzulegen.

  • Wenn der Wert des Parameters collation_database beim Starten des Dienstes nicht angegeben ist, wird standardmäßig der Wert des Parameters collation_server übernommen.
  • Wenn beim Erstellen einer Datenbank keine Sortierung angegeben wird, wird standardmäßig der Wert des Parameters collation_database verwendet.

Die Parameter character_set_database und collation_database sind in MySQL 5.7 veraltet und werden in einer nachfolgenden Version entfernt.
MySQL fügt einen neuen Parameter default_collation_for_utf8mb4 hinzu, um die Standardsortierung bei Verwendung des utf8mb4-Zeichensatzes zu steuern. Der Wert ist utf8mb4_0900_ai_ci oder utf8mb4_general_ci
Der Parameter default_collation_for_utf8mb4 wird unter den folgenden Bedingungen wirksam:

  • Bei Verwendung der Befehle SHOW COLLATION und SHOW CHARACTER SET.
  • Geben Sie beim Erstellen oder Ändern einer Bibliothek utf8mb4 an, aber nicht die Kodierungsregel.
  • Wenn Sie eine Tabelle erstellen oder ändern, geben Sie utf8mb4 an, aber keine Kodierungsregel.
  • Geben Sie beim Hinzufügen oder Ändern einer Spalte utf8mb4 an, aber nicht die Kodierungsregel.
  • Andere verwenden utf8mb4, geben aber keine Kodierungsregel an.

Vergleich zwischen utf8mb4_unicode_ci und utf8mb4_general_ci

1. Richtigkeit

  • Die Sortierregel utf8mb4_unicode_ci basiert auf standardmäßiger Unicode-Sortierung und -Vergleich, kann Sonderzeichen verarbeiten und ermöglicht eine genaue Sortierung in verschiedenen Sprachen.
  • Die Sortierregel utf8mb4_general_ci basiert nicht auf Standard-Unicode und kann einige Sonderzeichen nicht verarbeiten.

2. Leistung

  • Die Sortierung utf8mb4_general_ci ist relativ gut in der Sortierleistung
  • Die Sortierregel utf8mb4_unicode_ci implementiert einen komplexen Sortieralgorithmus zur Verarbeitung von Sonderzeichen und ihre Leistung ist etwas schlechter.
  • In den meisten Szenarien gibt es keinen signifikanten Leistungsunterschied zwischen den beiden.

Ergänzung: MySQL - utf8mb4 und gleichwertiger Abfragetest

Testskripte

## Löschen Sie die Testtabelle DROP TABLE IF EXISTS tb2001;
Tabelle löschen, wenn tb2002 vorhanden ist;
Tabelle löschen, wenn tb2003 vorhanden ist;

## Erstellen Sie eine Testtabelle CREATE TABLE tb2001(
ID INT AUTO_INCREMENT PRIMARY KEY,
c1 VARCHAR(100) COLLATE utf8mb4_unicode_ci,
c2 VARCHAR(100) COLLATE utf8mb4_bin
)ENGINE=INNODB STANDARD-CHARSET=utf8mb4;

Tabelle erstellen tb2002(
ID INT AUTO_INCREMENT PRIMARY KEY,
c1 VARCHAR (100) COLLATE utf8mb4_general_ci,
c2 VARCHAR(100) COLLATE utf8mb4_bin
)ENGINE=INNODB STANDARD-CHARSET=utf8mb4;

Tabelle erstellen tb2003(
ID INT AUTO_INCREMENT PRIMARY KEY,
c1 VARCHAR (100) COLLATE utf8mb4_0900_ai_ci,
c2 VARCHAR(100) COLLATE utf8mb4_bin
)ENGINE=INNODB STANDARD-CHARSET=utf8mb4;

## Testdaten einfügen INSERT INTO tb2001(c1,c2) ​​​​VALUES(0xF09F8D83,0xF09F8D83),(0xF09FA68A,0xF09FA68A),(0xF09F8CA0,0xF09F8CA0);
INSERT INTO tb2002(c1,c2)VALUES(0xF09F8D83,0xF09F8D83),(0xF09FA68A,0xF09FA68A),(0xF09F8CA0,0xF09F8CA0);
EINFÜGEN IN tb2003(c1,c2)VALUES(0xF09F8D83,0xF09F8D83),(0xF09FA68A,0xF09FA68A),(0xF09F8CA0,0xF09F8CA0);

## Äquivalenzabfragetest SELECT * FROM tb2001 WHERE c1=0xF09F8D83;
Wählen Sie * aus tb2002, wobei c1 = 0xF09F8D83;
Wählen Sie * aus tb2003, wobei c1 = 0xF09F8D83;

Wählen Sie * aus tb2001, wobei c2 = 0xF09F8D83;
Wählen Sie * aus tb2002, wobei c2 = 0xF09F8D83;
Wählen Sie * aus tb2003, wobei c2 = 0xF09F8D83;

Testergebnisse

mysql> AUSWÄHLEN * VON tb2001 WO c1=0xF09F8D83;
+----+------+------+
| Ich würde | c1 | c2 |
+----+------+------+
| 1 | 🍃 | 🍃 |
| 2 | 🦊 | 🦊 |
| 3 | 🌠 | 🌠 |
+----+------+------+
3 Zeilen im Satz (0,00 Sek.)

mysql> AUSWÄHLEN * VON tb2002 WO c1=0xF09F8D83;
+----+------+------+
| Ich würde | c1 | c2 |
+----+------+------+
| 1 | 🍃 | 🍃 |
| 2 | 🦊 | 🦊 |
| 3 | 🌠 | 🌠 |
+----+------+------+
3 Zeilen im Satz (0,01 Sek.)

mysql> AUSWÄHLEN * VON tb2003 WO c1=0xF09F8D83;
+----+------+------+
| Ich würde | c1 | c2 |
+----+------+------+
| 1 | 🍃 | 🍃 |
+----+------+------+
1 Zeile im Satz (0,00 Sek.)

MySQL> 
mysql> AUSWÄHLEN * VON tb2001 WO c2=0xF09F8D83;
+----+------+------+
| Ich würde | c1 | c2 |
+----+------+------+
| 1 | 🍃 | 🍃 |
+----+------+------+
1 Zeile im Satz (0,00 Sek.)

mysql> AUSWÄHLEN * VON tb2002 WO c2=0xF09F8D83;
+----+------+------+
| Ich würde | c1 | c2 |
+----+------+------+
| 1 | 🍃 | 🍃 |
+----+------+------+
1 Zeile im Satz (0,00 Sek.)

mysql> AUSWÄHLEN * VON tb2003 WO c2=0xF09F8D83;
+----+------+------+
| Ich würde | c1 | c2 |
+----+------+------+
| 1 | 🍃 | 🍃 |
+----+------+------+
1 Zeile im Satz (0,00 Sek.)

Testzusammenfassung

  • Durch die Verwendung des UTF8MB4-Zeichensatzes können Sonderzeichen wie Emoticons gespeichert werden.
  • Die Sortierungen utf8mb4_unicode_ci und utf8mb4_general_ci führen keine „korrekte Zuordnung“ zu Sonderzeichen durch.
  • Die Sortierung utf8mb4_0900_ai_ci kann Sonderzeichen „korrekt zuordnen“, ist aber nur auf MySQL Version 8.0 anwendbar.
  • Die Sortierregel utf8mb4_bin gleicht Sonderzeichen basierend auf einem Binärsystem ab, kann Sonderzeichen „korrekt abgleichen“ und ist auf alle Versionen von MySQL anwendbar.

Dies ist das Ende dieses Artikels über utf8mb4-Sortierregeln in MySQL. Weitere Informationen zur MySQL utf8mb4-Sortierung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Schritte zum Ändern des MySQL-Zeichensatzes auf UTF8 unter Linux
  • MySQL-Kodierung utf8 und utf8mb4 utf8mb4_unicode_ci und utf8mb4_general_ci
  • So ändern Sie die Kodierung der MySQL-Datenbank in utf8mb4
  • mysql charset=utf8 verstehen Sie wirklich, was es bedeutet
  • So ändern Sie den MySQL-Zeichensatz utf8 in utf8mb4
  • mysql verstümmelte Zeichen Latin1-Zeichen in UTF8-Details konvertiert

<<:  Der neueste Linux-Installationsprozess von Tomcat8

>>:  So ändern Sie die Standardübermittlungsmethode des Formulars

Artikel empfehlen

So legen Sie Verknüpfungssymbole in Linux fest

Vorwort Durch das Erstellen von Verknüpfungen in ...

Gründe, warum MySQL-Abfragen langsam sind

Inhaltsverzeichnis 1. Wo ist die Langsamkeit? 2. ...

Detaillierte Erklärung, wo Docker Protokolldateien speichert

Inhaltsverzeichnis Wo werden die Protokolle gespe...

URL-Rewrite-Modul 2.1 URL-Rewrite-Modul – Regeln schreiben

Inhaltsverzeichnis Voraussetzungen Einrichten ein...

HTML-Tabellen-Tag-Tutorial (19): Zeilen-Tag

Die Attribute des <TR>-Tags werden verwende...

8 wichtige JavaScript-Codefragmente für Ihr Projekt

Inhaltsverzeichnis 1. Holen Sie sich die Dateierw...

So entfernen Sie Wagenrücklaufzeichen aus Text in Linux

Machen Sie sich keine Sorgen, wenn Sie das Wagenr...