2014-05-11 7 views
8

Ich habe folgende sql. Funktioniert gut für die Suche nach IP-Adressen. Aber ich würde auch in der Lage mag so sein, suchenFinden verfügbaren IP-Bereich in MySQL Tabelle

select * from table 
where (INET_ATON(ip) BETWEEN INET_ATON('10.12.77.1') AND INET_ATON('10.12.77.10')) 
limit 30 

Ergebnisse ist in Ordnung

10.12.77.2 
10.12.77.5 
10.12.77.6 

wie kann ich wie

10.12.77.1 
10.12.77.3 
10.12.77.4 
10.12.77.7 
10.12.77.8 
10.12.77.9 
10.12.77.10 
erhalten verfügbar IPs

Ist es möglich, in Mysql zu tun, oder soll ich das in Java machen?

Thx

+0

Es ist nicht klar, was Sie fragen ... Wollen Sie Leerzeichen am Anfang jeder IP? –

+0

nein nein, ich möchte Ergänzung des ersten Ergebnisses. Es bedeutet alle Adresse in Reichweite - erstes Ergebnis. – user2475153

+0

Tun Sie es in Java usw., das ist kein Job für sql –

Antwort

0

Apache Commons Net hat eine SubnetUtils Klasse, die für IP und Netmask Berechnungen einfach und nützlich ist. Sie können ein Objekt mit gültigen Netzmaskenwerten initialisieren und erhalten SubnetInfo Klasse, um verschiedene Informationen zu erhalten.

SubnetUtils subnet = new SubnetUtils("10.12.77.1", "255.255.255.242"); 
SubnetInfo subnetInfo = subnet.getInfo(); 
1

Versuchen Sie nicht zwischen:

select * from table 
where (INET_ATON(ip) NOT BETWEEN INET_ATON('10.12.77.1') AND INET_ATON('10.12.77.10')) 
limit 30 

Durch die Art und Weise wird Ihre Abfrage 1 bis 10 suchen, warum also 30 begrenzen? Es sollte 10 sein.

Grüße.