2012-06-07 2 views
5

Frage: Wo finde ich den Vorrang von Zeichen beim Sortieren in MySQL, PHP oder einfach nur unter Linux und Windows OS?Welchen Vorrang haben Zeichen beim Sortieren in MySQL, PHP oder allgemein?

Zum Beispiel, jeder weiß, dass ein vor b kommt wenn an einer Schnur in MySQL eine aufsteigende Sortierung durchführen. Aber was ist mit anderen Charakteren? Ist das Dollar-Zeichen $ vor dem Stern kommen *? Kommt ein Leerzeichen vor einem Ausrufezeichen? etc ...

Was bestimmt die Sortierreihenfolge? Werden zugrunde liegende ascii/UTF-8-Werte verwendet? Ist es für verschiedene Technologien anders?

Technologies zu berücksichtigen:

  1. Datenbanken - MySQL/SQL/SQLite/Oracle/etc
  2. Programmiersprachen (für String-Sortierfunktionen) - PHP/Javascript/ASP.NET/Visual C#/Python/Rubin/Objective C
  3. OS (dh Dateien nach Dateinamen sortieren) - Windows/Linux/MacOS/iOS/Android
+1

In dbms heißt es "Kollation" – zerkms

+1

Es hängt von der Codierung ab. Zeichen, die keine Buchstaben oder Ziffern sind, werden normalerweise nach ihrem numerischen Wert sortiert, der (normalerweise) nach dem ASCII-Standard, dem Unicode-Standard oder dem ISO-8859-1-Standard definiert ist. – Linuxios

Antwort

1
  1. Datenbanken - Sortierungen, wenn keine Kollatierung gesetzt integer Zeichenwert
  2. Programmiersprachen - locale oder Integer-Zeichenwert oder benutzerdefinierte Funktion (in der Regel alle drei Optionen standardmäßig verfügbar sind)
  3. OS - Locale
1

Charaktere als Abbildungen von einem unsigned integer-Typ mit einem insbeson dargestellt werden lar Glyphe. Das jeweilige Mapping wird durch den Zeichensatz definiert.

Also, wenn Sie Zeichen vergleichen, vergleichen Sie wirklich die ganze Zahl, die das Zeichen in einem bestimmten Zeichensatz darstellt.

z.B. Java vergleicht String s basierend auf ihren Unicode-Darstellungen. Source

1

Es wird noch interessanter, wenn Sie andere Sprachen betrachten.

Ä und ö sind Buchstaben mit Akzenten in Niederländisch und Deutsch, aber "echte" Buchstaben im schwedischen Alphabet (nach Z, nicht zwischen A und B/O bzw. L).

Verwandte Themen