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.