phpbar.de logo

Mailinglisten-Archive

[php] Re: SQL-Ausgabe nach IP-Nummern sortieren.

[php] Re: SQL-Ausgabe nach IP-Nummern sortieren.

Martin Ramsch m.ramsch_(at)_computer.org
Thu, 2 Sep 1999 16:45:05 +0200


Kristian Köhntopp schrieb am Donnerstag, den  2. September 1999:
> Ich habe das Problem gelöst, aber die Lösung ist dreckig. Während
> ich in einer weiteren Mail jetzt die Lösung erkläre (was einige Zeit
> dauern wird), könnt Ihr ja mal versuchen, diese Aufgabe alleine zu
> knacken. Das ist sehr instruktiv.

Mein Vorschlag:

  SELECT ip,
         (( FLOOR(ip)*256
           +FLOOR(SUBSTRING_INDEX(ip,'.',-3))
          ) *256
          +FLOOR(SUBSTRING_INDEX(ip,'.',-2))
         )*256
         +FLOOR(SUBSTRING_INDEX(ip,'.',-1)) AS ipnum
  FROM iptest
  ORDER BY ipnum;

Das spielt also damit, daß der String '1.2.3' im numerischen Kontext
einfach als die Zahl 1.2 interpretiert wird.

Sauberer wär's, die Textteile hinter dem Komma immer noch wegzulassen
- aber dann wird's noch monströser:

  SELECT ip,
         (( SUBSTRING_INDEX(ip,'.',1) *256
           +SUBSTRING_INDEX(SUBSTRING_INDEX(ip,'.',-3),'.',1)
          ) *256
          +SUBSTRING_INDEX(SUBSTRING_INDEX(ip,'.',-2),'.',1)
         )*256
         +SUBSTRING_INDEX(SUBSTRING_INDEX(ip,'.',-1),'.',1) AS ipnum
  FROM iptest
  ORDER BY ipnum;

Bin auf KKs Lösung gespannt.

Ciao,
  Martin
-- 
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ >
PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26  E4 EC 80 58 7B 31 3A D7


php::bar PHP Wiki   -   Listenarchive