Vinzenz Mai: Datenbank char Feld sortieren (IP-Adressen)

Beitrag lesen

Hallo,

bei einer Datenbank habe ich eine Anzahl von IP-Adressen. Die ersten beiden Dezimalzahlen sind bei allen IP-Adressen gleich, es unterscheiden sich nur die letzten beiden Dezimal Zahlen (X).

welches Datenbankmanagementsystem (DBMS), welche Version?

1.1.XXX.XXX

Diese IP-Adresse würde ich jetzt gerne sortieren, so das ich folgende Ausgabe erhalte

1.1.48.1
1.1.48.2
.
.
.
1.1.49.1

Zur Zeit habe ich folgende Sortierung

1.1.48.100
1.1.48.101
.
.
.
1.1.48.21

Ich habe schon gesucht, aber bisher keine richtige Lösung des Problems gefunden. Ich würde das ganze auch gerne als Char belassen und nicht zu einem INT umwandeln.

Konsultiere das Handbuch Deines DBMS, schau Dir die Zeichenkettenfunktionen an. Extrahiere aus diesen die Werte des dritten und vierten Oktetts. Wandle diese mit Hilfe von CAST in Integer um. Sortiere zuerst nach dem dritten Oktett, dann nach dem vierten Oktett.

Wenn Dein DBMS keine Indexe auf berechnete Spalten unterstützt, wird das ganze nicht besonders gut skalieren.

Du könntest zwar die Oktette mit führenden Nullen ergänzen, was Deine Sortierung dramatisch vereinfacht - aber handelsübliche Software interpretiert die Oktette derartig dargestellter IP-Adressen als Oktalzahlen mit unerwünschten Ergebnissen.

Freundliche Grüße

Vinzenz