Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Ich verstehe Sortierung nicht? (Mysql, RDBMS, Zeichensätze)

Der Hauptpunkt einer Datenbanksortierung besteht darin, zu bestimmen, wie Daten sortiert und verglichen werden.

Groß-/Kleinschreibung bei Zeichenfolgenvergleichen

SELECT "New York" = "NEW YORK";` 

wird true für eine Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung zurückgeben; false für Groß- und Kleinschreibung.

Welche Sortierung was macht, kann man dem _ci entnehmen und _cs Suffix im Namen der Sortierung. _bin Sortierungen führen binäre Vergleiche durch (Strings müssen zu 100 % identisch sein).

Vergleich von Umlauten/Zeichen mit Akzent

Die Sortierung bestimmt auch, ob akzentuierte Zeichen in Zeichenfolgenvergleichen als ihre lateinischen Gegenstücke behandelt werden.

SELECT "Düsseldorf" =  "Dusseldorf";
SELECT "Èclair" =      "Eclair";

wird im ersten Fall true zurückgeben; bei letzterem falsch. Sie müssen die Beschreibung jeder Sortierung lesen, um herauszufinden, welche welche ist.

String-Sortierung

Die Sortierung beeinflusst die Art und Weise, wie Strings sortiert werden.

Beispiel:

  • Umlaute Ä Ö Ü stehen am Ende des Alphabets im finnisch/schwedischen Alphabet latin1_swedish_ci

  • sie werden als A O U behandelt in deutscher DIN-1-Sortierung (latin_german1_ci )

  • und als AE OE UE in deutscher DIN-2-Sortierung (latin_german2_ci ). ("Telefonbuch"-Sortierung)

  • In latin1_spanish_ci , „ñ“ (n-Tilde) ist ein separater Buchstabe zwischen „n“ und „o“.

Diese Regeln führen zu unterschiedlichen Sortierreihenfolgen, wenn nicht-lateinische Zeichen verwendet werden.

Sortierungen zur Laufzeit verwenden

Sie müssen eine Sortierung für Ihre Tabelle und Spalten auswählen, aber wenn Sie die Leistungseinbußen nicht stören, können Sie Datenbankoperationen zur Laufzeit mit COLLATE in eine bestimmte Sortierung zwingen Stichwort.

Dadurch wird table sortiert nach name Spalte nach deutschen DIN-2-Sortierregeln:

SELECT name
FROM table
ORDER BY name COLLATE latin1_german2_ci;

Verwenden von COLLATE zur Laufzeit hat Auswirkungen auf die Leistung, da jede Spalte während der Abfrage konvertiert werden muss. Denken Sie also zweimal nach, bevor Sie dies bei großen Datensätzen anwenden.

MySQL-Referenz:

  • Zeichensätze und Sortierungen, die MySQL unterstützt
  • Beispiele für den Effekt der Sortierung
  • Sortierprobleme