我想找到一种方法来执行 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
最好这是一个可以在 mysql、postgres、oracle 等下工作的 SQL 语句。