Marc Schumacher: (MySQL) IP-Adressen sortieren

Hallo Leute,

ich hab eine Tabelle in MySQL, wo diverse IP-Adressen enthalten sind.
Diese möchte ich nun sortiert ausgeben.

Ich hab mir da schon ein recht kompliziertes Konstrukt ausgedacht, aber leider nicht ganz fehlerfrei, da das Format doch eingeschränkt ist.

$abfrage .= " order by REPLACE(left(ipadresse,2),'.','') * 1, REPLACE(substring(substring_index(ipadresse,'.',-3),1,2),'.','') * 1, REPLACE(substring(substring_index(ipadresse,'.',-2),1,2),'.','') * 1, REPLACE(right(ipadresse,2),'.','') * 1";

Vielleicht gibts doch ne elegantere Lösung, die auch immer bei beliebigen IP-Adressen richtig sortiert?

Bei mir sortiert er 3-stellige IPs leider nicht richtig.

Rein theoretisch müsste es doch gehen, wenn ich die IP so umstelle:
aus 10.1.123.5 eine 010.001.123.005 machen und dann noch die Punkte entfernen, oder?

Aber wie baue ich sowas in eine MySQL-Abfrage ein?

Dank für Eure Hilfe,

Marc

  1. Hello,

    versuch mal order by (inet_nto(inet_aton(IP_STRING))

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
      Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
      Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. Hello,

      Hello,

      versuch mal order by (inet_nto(inet_aton(IP_STRING))

      Schreibfehler:
      order by (inet_ntoa(inet_aton(IP_STRING)) # geht aber nicht...

      aber so geht es.
      select IP from ADRESSE order by inet_aton(IP);

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
        Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
        Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. Hello Tom,

        aber so geht es.
        select IP from ADRESSE order by inet_aton(IP);

        derf ich das auf die PerlBase tun !?

        Bitte .....

        http://perlbase.xwolf.de/

        Lewe Grüße, Rolf

        --
        KnowHow veröffentlichen statt Patentieren!