dedlfix: sql: Sortierung

Beitrag lesen

Tach!

Wie bringe ich sql bei, dass die längere Zahl hier den Ausschlag für die Sortierung gibt?

Das Prinzip nennt sich Natural Sort, das macht zum Beispiel Windows im Dateisystem, aber MySQL hat das nicht als Leistungsmerkmal.

SELECT 
  LEN(w_nr) as laenge, 
  w_nr 
FROM `table_name`
ORDER BY 
  laenge ASC, w_nr DESC

Ja, das wäre eine einfache Methode, unter der Annahme, dass der Prefix immer gleich lang ist. Man muss die Längenermittlung übrigens auch nicht als Feld in der SELECT-Klausel aufführen, es reicht, LEN(w_nr) in der ORDER-BY-Klausel zu haben.

Wenn der Prefix unterschiedlich lang sein kann, muss man sich was überlegen, wie man den entfernen kann. Zum Beispiel einen Substring nach dem Bindestrich ermitteln. MySQL hat ja auch Stringfunktionen an Bord.

dedlfix.