yo Michi,
da bin ich wieder, hat ein wenig gedauert. nun aber zu dem lösungsweg. das erste, was man machen muss, herauszufinden, ob das letzte zeichen ein buchstabe ist oder nicht. da habe ich unter mysql keine funktion gefunden und es deswegen etwas umständlich über eine liste gemacht. vielleicht kann man das ja verbessern falls jemand eine funktion kennt. je nachdem ob es ein buchstabe ist oder nicht, wird das letzte zeichen abgeschitten und dann mit 0 zu einer konstanten länge aufgefüllt. folgende funktionen habe ich verwendet.
RIGHT(paragraph, 1) = letzte zeichen eines strings
SUBSTRING(paragraph,1,length(paragraph -1) = alle zeichen eines strings ausser das letzte zeichen
FIND_IN_SET(RIGHT(paragraph,1),'1,2,3,4,5,6,7,8,9,0') = überprüft ob das letzte zeichen eine ziffer ist
in der lösung habe ich die sortierung als spalten mit ausgegeben. das muss man nicht machen, sondern köntnte es in die ORDER BY klausel übernehmen, dient aber der besseren übersicht.
SELECT id, paragraph, LPAD(IF(FIND_IN_SET(RIGHT(paragraph,1),'1,2,3,4,5,6,7,8,9,0'), paragraph, SUBSTRING(paragraph,1,length(paragraph -1))),5,'0') AS Sort, RIGHT(paragraph, 1) as Last
FROM
gesetze
ORDER BY Sort, Last
grundsätzlich ist es aber anzuraten, die paragraphen-zahl und den suffix(buchstaben) in zwei spalten aufzuteilen. das würde vorteile bringen.
Ilja