gpt4 book ai didi

Oracle:将 IPv4 地址转换为数字?

转载 作者:行者123 更新时间:2023-12-04 10:38:33 27 4
gpt4 key购买 nike

如何将点十进制格式的 IPv4 地址转换为数字?例如,地址 39.255.2.51 应转换为 4026466867

最佳答案

  • 使用 regexp_substr 提取地址的四个八位字节。
  • 通过将八位字节移回其原始位置来重构值。

正则表达式可能相对昂贵,因此如果您经常这样做,您可能会考虑将数值与 IP 地址一起缓存在表中。

with addr as (select '239.255.2.51' ip from dual)
select ip, to_number(regexp_substr(ip, '\d+', 1, 1)) * 16777216 +
to_number(regexp_substr(ip, '\d+', 1, 2)) * 65536 +
to_number(regexp_substr(ip, '\d+', 1, 3)) * 256 +
to_number(regexp_substr(ip, '\d+', 1, 4)) n
from addr;

IP N
------------- ----------
239.255.2.51 4026466867

为了完整起见,下面是如何走另一条路。

with addr as (select 4026466867 n from dual)
select n, mod(trunc(n/16777216),256) ||'.'||
mod(trunc(n/65536), 256) ||'.'||
mod(trunc(n/256), 256) ||'.'||
mod(n, 256) ip
from addr;

N IP
---------- ------------
4026466867 239.255.2.51

关于Oracle:将 IPv4 地址转换为数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27260486/

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