gpt4 book ai didi

postgresql - 如何从 PostgreSQL 中的两个 IP 获取 CIDR?

转载 作者:行者123 更新时间:2023-11-29 11:59:10 24 4
gpt4 key购买 nike

在 PostgreSQL 中,我可以获得 CIDR 范围的上限和下限,如下所示。

但是如何从两个 IP 地址(通过 SQL)获取 CIDR?
例如

input "192.168.0.0";"192.168.255.255"
output "192.168.0.0/16"

SELECT 
network
,network::cidr
-- http://technobytz.com/ip-address-data-types-postgresql.html
--,netmask(network::cidr) AS nm
--,~netmask(network::cidr) AS nnm
,host(network::cidr) AS lower
,host(broadcast(network::cidr)) AS upper -- broadcast: last address in the range
,family(network::cidr) as fam -- IPv4, IPv6
,masklen(network::cidr) as masklen
FROM
(
SELECT CAST('192.168.1.1/32' AS varchar(100)) as network
UNION SELECT CAST('192.168.0.0/16' AS varchar(100)) as network
--UNION SELECT CAST('192.168.0.1/16' AS varchar(100)) as network

) AS tempT

最佳答案

我想你在找inet_merge :

test=> SELECT inet_merge('192.168.0.0', '192.168.128.255');
┌────────────────┐
│ inet_merge │
├────────────────┤
│ 192.168.0.0/16 │
└────────────────┘
(1 row)

关于postgresql - 如何从 PostgreSQL 中的两个 IP 获取 CIDR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40677253/

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