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:
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:
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.
Leave a Reply