gpt4 book ai didi

sql - 使用 SQL 确定子网掩码的 cidr 值

转载 作者:行者123 更新时间:2023-12-04 02:09:01 24 4
gpt4 key购买 nike

我想找到一种方法来执行 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 语句。

最佳答案

我想我已经找到了解决我的问题的方法。这是我所做的:

select CONCAT(INET_NTOA(ip_addr),'/',32-log2((4294967296-ip_mask))) net 
from subnets
order by ip_addr

基本上我拿我的十进制掩码并从最大十进制值中减去它。然后我对该值进行 log2 以获取对数值。然后简单地从 32(可用的最大位)中减去它。

希望能帮助别人。

谢谢

关于sql - 使用 SQL 确定子网掩码的 cidr 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/279431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com