【问题标题】:Find Subnet Address given IP Address and Prefix Length in Oracle 12c/ PL SQL在 Oracle 12c/PL SQL 中查找给定 IP 地址和前缀长度的子网地址
【发布时间】:2020-11-13 01:03:57
【问题描述】:

给定 IP 地址(例如:12.12.12.12/24)返回前缀 IP 地址(例如:12.12.12.0)。 我们如何在 SQL 中进行这些转换?

我试图通过将 IP 地址转换为二进制然后对它们进行与运算来将一个方法串在一起。一般来说,有大量的例子,没有任何适用于 PL/SQL 的例子。任何帮助表示赞赏。

【问题讨论】:

标签: sql oracle plsql


【解决方案1】:

这是一种使用 REGEXP_REPLACE() 的方法。正则表达式描述字符串,括号中的“记住”部分。记住的部分是字符串中最后一个句点之前的所有内容。我们不想要字符串的其余部分。调用的替换部分替换为第一个记住的部分(表示为 \1),后跟 0。

SELECT REGEXP_REPLACE('12.12.12.12/24', '(.*\.).*', '\10') new_ip
from dual;


NEW_IP    
----------
12.12.12.0
1 row selected.

【讨论】:

  • 适用于 24 的前缀长度。我认为 OP 正在寻找更通用的方法
猜你喜欢
  • 2017-10-07
  • 2016-03-08
  • 2019-11-09
  • 2014-12-31
  • 2011-02-15
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
  • 2016-04-11
相关资源
最近更新 更多