当前位置: 首页 > 面试题库 >

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

裴成文
2023-03-14
问题内容

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

基本上,我将decmial掩码从最大十进制值中减去。然后,我对该值进行log2以获得对数值。然后只需从32(可用的最大位)中减去该值即可。

希望对别人有帮助。

谢谢



 类似资料:
  • 问题内容: 给定CIDR地址,例如 如何确定面膜长度?() 如何确定掩码地址?() 如何确定网络地址?() 问题答案: 它由apache utils涵盖。 请参阅以下URL:http : //commons.apache.org/proper/commons- net/apidocs/org/apache/commons/net/util/SubnetUtils.html 注意:对于使用// 32

  • 问题内容: 我正在寻找一种将给定IP4点缀四边形IP与CIDR表示掩码匹配的快速/简单方法。 我有一堆IP,我需要查看它们是否与IP范围匹配。 例: 会是什么模样? 它并不一定必须很简单,但是快速就可以了。仅使用内置/通用功能的任何东西都是一种奖励(因为我很可能会让一个人向我展示梨子中的某些东西,但这样做我不能依赖于梨子或该软件包安装在我的代码所在的位置)部署)。 问题答案: 如果仅使用IPv4:

  • 如何使用postgres查询最小或最大INET/CIDR 但看起来: network_smower(inet,inet)和network_marger(inet,inet) x86_64-redhat-linux-gnu上的PostgreSQL 9.2.15,由gcc(gcc)4.8.5 201 50623(Red Hat 4.8.5-4)编译,64位

  • 本文向大家介绍Java掩码的几种使用例举,包括了Java掩码的几种使用例举的使用技巧和注意事项,需要的朋友参考一下 java掩码 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对呐喊教程的支持。如果你想了解更多相关内容请查看下面相关链接

  • 问题内容: 如何在SQL SERVER的字符串中的x和y char之间替换字符。例如,如果我有:TEST123456在结尾处有TE ** 56。我不知道字符串会持续多长时间,但我知道我需要屏蔽字符串中x和y之间的字符 问题答案: 您可以使用和作为: 当您说 “我不知道字符串会多长”时 ,该函数将根据和提供您返回的星号“ *” 。