Beschreibung der chinesischen Sortierregeln für MySQL

Beschreibung der chinesischen Sortierregeln für MySQL

Bei der Verwendung von MySQL sortieren und fragen wir häufig ein Feld ab. Normalerweise möchten wir nach dem ersten Buchstaben des chinesischen Pinyin sortieren. Beim Sortieren chinesischer Schriftzeichen in MySQL sind die Sortierergebnisse chinesischer Schriftzeichen jedoch häufig falsch.

Diese Situation besteht in vielen Versionen von MySQL.

Wenn dieses Problem nicht gelöst wird, kann MySQL Chinesisch nicht verarbeiten.

Der Grund für dieses Problem ist, dass MySQL bei der Abfrage von Zeichenfolgen nicht zwischen Groß- und Kleinschreibung unterscheidet. Beim Kompilieren von MySQL wird im Allgemeinen der ISO-8859-Zeichensatz als Standardzeichensatz verwendet. Daher verursacht die Groß- und Kleinschreibungskonvertierung chinesischer codierter Zeichen während des Vergleichsprozesses dieses Phänomen.

Nach Überprüfung der Angaben gibt es zwei Lösungsansätze:

1. Fügen Sie dem Feld mit chinesischen Zeichen das Attribut „binary“ hinzu, damit es als binäres Feld verglichen werden kann. Ändern Sie beispielsweise „name varchar(10)“ in „name varchar(10)binary“.

2. Wenn Sie die Tabellenstruktur nicht ändern oder MySQL neu kompilieren möchten, können Sie die Funktion CONVERT auch im Order-by-Teil der Abfrageanweisung verwenden.

Wenn das Namensfeld beispielsweise auf Chinesisch ist und sortiert werden muss, können Sie „select * from mytable order by CONVERT(name USING gbk);“ schreiben.

Ergänzung: Problem mit der Standardsortierung der MySQL-Datenbank

1. Offizielle MySQL-Antwort:

SELECT * FROM tbl – dies führt einen „Tabellenscan“ durch. Wenn in der Tabelle noch nie Lösch-/Ersetzungs-/Aktualisierungsvorgänge ausgeführt wurden, werden die Datensätze in der Einfügereihenfolge angezeigt, daher das, was Sie beobachtet haben.

Dies bedeutet, dass, wenn eine MyISAM-Engine-Tabelle nicht gelöscht oder geändert wird und eine Select-Anweisung ohne „order by“ ausgeführt wird, die Tabelle in der Einfügereihenfolge sortiert wird.

Wenn Sie dieselbe Anweisung mit einer InnoDB-Tabelle ausgeführt hätten, wären sie in der Reihenfolge PRIMARY KEY und nicht in der Reihenfolge INSERT übermittelt worden. Auch hier handelt es sich um ein Artefakt der zugrunde liegenden Implementierung und nicht um etwas, von dem man sich verlassen kann.

Unter den gleichen Umständen wird bei InnoDB-Engine-Tabellen mit „select“ ohne „order by“ nach dem Primärschlüssel sortiert, von klein nach groß.

2. Zeigen Sie den Befehl der Datenbank-Engine an:

(1) Die von einer Tabelle verwendete Engine anzeigen

Tabelle erstellen anzeigen;

(2) Prüfen Sie, welche Engines MySQL unterstützt

Motoren anzeigen;

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Beispiel für utf8mb4-Sortierung in MySQL
  • Sortieren von MySQL-Aggregatfunktionen
  • MySQL-Sortierung mittels Index-Scan
  • Einige weniger bekannte Sortiermethoden in MySQL
  • Fallstricke basierend auf MySQL-Standardsortierregeln
  • MySQL-Sortierprinzipien und Fallanalyse
  • Sortierung und Paginierung von MySQL-Abfragen
  • So verwenden Sie Indizes zur Optimierung von MySQL ORDER BY-Anweisungen
  • Mysql-Sortierung und Paginierung (Order by & Limit) und vorhandene Fallstricke
  • Details zur MySQL-Sortierfunktion

<<:  Beispiel für die Einrichtung eines mehrspaltigen Layouts gleicher Höhe mit CSS

>>:  Details zum Vue Page Stack Manager

Artikel empfehlen

Zusammenfassung häufiger Probleme und Anwendungskenntnisse in MySQL

Vorwort Bei der täglichen Entwicklung oder Wartun...

Analyse der Verwendung des Linux-Schwachstellen-Scan-Tools lynis

Vorwort: Lynis ist ein Sicherheitsprüfungs- und H...

Einstellungen für den Ubuntu-Boot-Autostart-Dienst

So erstellen Sie einen Dienst und starten ihn aut...

Mit HTML+CSS3 implementierte Anmeldeschnittstelle

Ergebnisse erzielen Bauen Sie zunächst mit HTML e...

W3C Tutorial (4): W3C XHTML Aktivitäten

HTML ist eine Hybridsprache, die zum Veröffentlic...

Detaillierte Erklärung gängiger Befehle im Docker-Repository

Einloggen Docker-Anmeldung Schließen Sie die Regi...

In diesem Artikel erfahren Sie mehr über NULL in MySQL

Inhaltsverzeichnis Vorwort NULL in MySQL 2 NULL b...

Detaillierte Erklärung der neuen Funktion ROLE in MySQL 8

Welche Probleme löst MySQL ROLE? Wenn Sie ein DBA...

Detaillierte Erläuterung der Hochverfügbarkeitskonfiguration von Docker

Docker Compose Docker Compose unterteilt die verw...

Detaillierte Erklärung der Anwendungsfälle von Vue-Listenern

Die erste Möglichkeit besteht darin, jQuery's...

Analyse und Behandlung von Bildlaufleisten in HTML und eingebettetem Flash

Bei der Entwicklung begegnen wir häufig dieser Sit...

IE6-Verzerrungsproblem

Frage: <input type="hidden" name=&qu...

JavaScript zum Erzielen eines einfachen Drag-Effekts

In diesem Artikel wird der spezifische JavaScript...