在mysql表中查找可用的IP范围

时间:2014-05-11 07:08:08

标签: mysql inet-aton

我有以下sql。适用于搜索IP。 但我也希望能够搜索

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

结果很好

10.12.77.2
10.12.77.5
10.12.77.6

我如何获得像

这样的可用IP
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

是否可以在mysql中执行,或者我应该在Java中执行此操作?

THX

2 个答案:

答案 0 :(得分:1)

您是否尝试过:

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

顺便说一下你的查询是1到10,所以为什么要限制30? 它应该是10。

问候。

答案 1 :(得分:0)

Apache Commons Net有一个SubnetUtils类,对于IP和Netmask计算来说非常简单有用。您可以使用有效的网络掩码值初始化对象,并获取SubnetInfo类以获取各种信息。

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