MYSQL-Tabelle nach variablen Teilstrings sortieren

Hallo,
innerhalb meiner Datenbank habe ich ein Feld für Internetadresse. Dieses Feld möchte ich jetzt als Sortierungselement angeben, wobei jedoch das vorangestellte Protokoll (http, https, ftp) und ein mögliches www. davor bei der Sortierung ignoriert werden soll.

Das Protokoll alleine bekomme ich problemlos mit
mysql>ORDER BY SUBSTRING_INDEX(feldname, ‚//‘, -1)
weg. Nur mit dem ‚www.‘ davor hapert es, weil dieses ja nicht immer vorhanden ist und somit eine feste Vorgabe mittels mysql>SUBSTRING_INDEX() entfällt.

Gibt es eine Möglichkeit, mysql>ORDER BY mit mysql>REGEXP() zu kombinieren oder eine andere Möglichkeit, ohne einen riesigen Affenaufwand mit -zig Mal mysql>SUBSTRING() und mysql>LOCATE() diese variablen Teilstrings sortiert zu bekommen?

Für Antwort(en) danke ich schon einmal im Voraus.

Hallo Kira-Bianca,

was hälst Du von

ORDER BY SUBSTRING\_INDEX(REPLACE(`feldname`,'www.',''), '//', -1)

(in der Hoffnung, dass das www. nicht zweimal vorkommt.)

MfG Georg V.

Hallo Georg,
auf die Idee mit mysql>REPLACE() bin ich in diesem Zusammenhang überhaupt nicht gekommen. Nun ja, ich experimentiere im Moment auch noch ziemlich damit herum und bin erst dabei, mir MYSQL im Selbststudium anzueignen.

Übrigens, auch wenn das www. zwei Mal in der Adresse vorkommen sollte, wäre das bei Deiner Lösung kein Problem. Ich will ja nur gegebenenfalls das erste www. bei der Sortierung ignoriert bekommen. Und das folgt auf jeden Fall direkt hinter dem Doppel-Slash. Also bekomme ich mit
mysql> … REPLACE(feldname,’//www.’,’//’) …
garantiert das gewünschte Ergebnis. Aber auch so; wer ist schon so bekloppt und macht eine Subdomäne, deren Name mit www endet? *:wink:*

Vielen Dank für Deine klasse Antwort.

Viele Grüße
Kira-Bianca

1 Like