msc: Unterschiedliche Sortierfolge MySQL-PHP

Hallo!

Ich habe leider feststellen müssen, daß die Sortierfolge von MySQL und PHP dann unterschiedlich sind, wenn am Vergleich deutsche Umlaute beteiligt sind. Ein "select name from blabla order by name", wobei auf name ein Index ist, reiht "Rüdisser" vor "Römer" ein, während ein PHP-Vergleich richtigerweise ("Rüdisser" > "Römer") true ergibt. Hängt das mit dem Zeichensatzcodierung zusammen oder gibt es da einen Workaround? (Leider habe ich weder auf die mysql-Installation noch auf die PHP-Installation einen Einfluss)

Danke im Voraus falls es jemand wissen sollte;)

  1. echo $begrüßung;

    Ich habe leider feststellen müssen, daß die Sortierfolge von MySQL und PHP dann unterschiedlich sind, wenn am Vergleich deutsche Umlaute beteiligt sind. [...] Hängt das mit dem Zeichensatzcodierung zusammen oder gibt es da einen Workaround?

    Nein, der verwendete Zeichensatz ist dabei unschuldig. Für die Sortierung ist die Kollation zuständig. Wenn nichts anderes konfiguriert wurde, sortiert MySQL schwedisch.
    Das Thema Zeichensatz und Sortierung wurde in MySQL 4.1 stark erweitert, so dass nun an vielen Stellen einzeln Zeichensatz und Sortierung eingestellt werden kann. Wie es vor Version 4.1 war, habe ich mittlerweile vergessen, ich glaube aber nicht, dass das anderswo als in der Serverkonfiguration einzustellen ging. Das online verfügbare 3.23,4.0,4.1-Handbuch geht auch nicht weiter darauf ein (oder ich finde die passende Stelle nicht). Alte Handbücher sollten aber noch in alten Download-Paketen vorhanden sein, wobei gilt: je neuer die Versionsnummer, desto höher die Chancen schon das Handbuch der Nachfolgeversion zu erwischen.

    echo "$verabschiedung $name";

    1. Hallo,

      Nein, der verwendete Zeichensatz ist dabei unschuldig. Für die Sortierung ist die Kollation zuständig. Wenn nichts anderes konfiguriert wurde, sortiert MySQL schwedisch.

      ja, das habe ich alles befürchtet. Ich hätte es für eine Funktion benötigt, die mir die Datensatznummer eines Records zurückgibt, hat auch alles funktioniert, bis eben auf das Problem mit der Sortierfolge.

      Leider läuft auf dem bewußten Server irgendeine 3.x Version von Mysql, und wie gesagt, darauf habe ich leider keinen Einfluß. Muß ich halt sehen, ob ich PHP dazu bringe, die Strings "falsch" zu vergleichen, trotzdem danke.