Найти доступный диапазон 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();