Найти доступный диапазон IP-адресов в таблице MySQL

У меня есть следующий 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?

Спасибо

2 ответа

Вы пробовали не между:

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.

С уважением.

Apache Commons Net имеет SubnetUtils класс, который прост и полезен для вычислений IP и Netmask. Вы можете инициализировать объект с действительными значениями маски сети и получить SubnetInfo класс, чтобы получить различную информацию.

SubnetUtils subnet = new SubnetUtils("10.12.77.1", "255.255.255.242");
SubnetInfo subnetInfo = subnet.getInfo();
Другие вопросы по тегам