Mailinglisten-Archive |
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