Я хотел бы найти способ выполнить SQL-запрос, который вычислит cidr (битовое представление) маски подсети, хранящейся в базе данных. Так, например, у меня есть 255.255.255.0 или его десятичное значение (4294967040), хранящееся в базе данных. Я хотел бы сделать выбор и вернуть / 24 представление через запрос.
Я сделал следующее, чтобы определить последний IP-адрес подсети, поэтому я надеюсь сделать что-то подобное, чтобы определить представление маски cidr.
select concat(inet_ntoa(ip_addr),'-',
inet_ntoa(ip_addr+(POWER(2,32)-ip_mask-1))) range
from subnets
order by ip_addr
Желательно, чтобы это был оператор SQL, который работал бы под mysql, postgres, oracle и т. Д.