set_masklen() 是一个用于设置 inet 值网络掩码长度的系统函数。
set_masklen() 函数添加于 PostgreSQL 7.2。
用法
set_masklen (inet,integer) →inet
set_masklen (cidr,integer) →cidr
如果提供的网络掩码长度为 -1,则网络掩码长度将设置为地址类型的最大值(IPv4 为 32 位,IPv6 为 128 位)。截至 2023 年,此行为尚未记录在案。
如果提供无效的 inet 或 cidr 值,将引发 ERROR 错误。
变更历史
- PostgreSQL 7.2
- 添加于(提交 d4a4d4c3)
示例
set_masklen() 的基本用法示例
postgres=# SELECT set_masklen('192.168.1.2/24', 16);
set_masklen
----------------
192.168.1.2/16
在上面的示例中,当提供 inet 值时,地址部分不会改变。当提供 cidr 值时,新网络掩码右侧的地址位将被设置为零。
postgres=# SELECT set_masklen('192.168.1.0/24'::cidr, 16);
set_masklen
----------------
192.168.0.0/16
(1 row)
将 -1 作为网络掩码长度提供
postgres=# SELECT set_masklen('192.168.1.0/24'::cidr, -1);
set_masklen
----------------
192.168.1.0/32
(1 row)
参考资料
- PostgreSQL 文档: IP 地址函数
