MySQL: “ORDER BY” und deutsche Umlaute

By

in

Verwendetet man in einer MySQL-Datenbank die falsche Kollation, dann kann eine Sortierung mit ORDER BY in Verbindung mit deutschen Umlauten (ä, ö, ü) zu einer falschen Sortierreihenfolge führen. Die Ausgabe könnte dann folgendermaßen aussehen:

SQL
mysql> SELECT * FROM test ORDER BY name;
...
|    1 | besonders  |
|    2 | formschön  |
|    3 | stilvoll   |
|    4 | ästhetisch |
|    5 | überragend |
...

Abhilfe kann dabei die Verwendung von COLLATE schaffen, was eine Sortierung nach der angegebenen Kollation erzwingt. Das Ergebnis dieser Abfrage sieht dann wie folgt aus:

SQL
mysql> SELECT * FROM test ORDER BY name COLLATE latin1_german2_ci;
...
|    4 | ästhetisch |
|    1 | besonders  |
|    2 | formschön  |
|    3 | stilvoll   |
|    5 | überragend |
...

Warum das Ganze?

Bei der Arbeit mit PHPMyAdmin kam es dazu, dass es trotz einer Vereinheitlichung aller möglichen Kollationen und Kodierungen auf latin1_german2 nicht die gewünschte Sortierung ausgegeben wurde. Vielleicht wurde in PHPMyAdmin die eigentliche Einstellung auch nur übersehen?! Wer weiß, COLLATE führte in diesem Fall zum Erfolg.



Comments

Leave a Reply

Your email address will not be published. Required fields are marked *