选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.3 已于 2018 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

9.12. 网络地址函数和操作符 #

表 9.34列出了可用于 cidrinet 类型的操作符。操作符 <<<<=>>>>= 测试子网包含关系。它们只考虑两个地址的网络部分(忽略主机部分),并判断一个网络是否与另一个网络相同,或是另一个网络的子网。

表 9.34. cidrinet 操作符

操作符 描述 示例
< 小于 inet '192.168.1.5' < inet '192.168.1.6'
<= 小于或等于 inet '192.168.1.5' <= inet '192.168.1.5'
= 等于 inet '192.168.1.5' = inet '192.168.1.5'
>= 大于或等于 inet '192.168.1.5' >= inet '192.168.1.5'
> 大于 inet '192.168.1.5' > inet '192.168.1.4'
<> 不等于 inet '192.168.1.5' <> inet '192.168.1.4'
<< 被包含 inet '192.168.1.5' << inet '192.168.1/24'
<<= 被包含于或等于 inet '192.168.1/24' <<= inet '192.168.1/24'
>> 包含 inet '192.168.1/24' >> inet '192.168.1.5'
>>= 包含或等于 inet '192.168.1/24' >>= inet '192.168.1/24'
~ 按位非 ~ inet '192.168.1.6'
& 按位与 inet '192.168.1.6' & inet '0.0.0.255'
| 按位或 inet '192.168.1.6' | inet '0.0.0.255'
+ 加法 inet '192.168.1.6' + 25
- 减法 inet '192.168.1.43' - 36
- 减法 inet '192.168.1.43' - inet '192.168.1.19'

表 9.35列出了可用于 cidrinet 类型的函数。abbrevhosttext 函数主要用于提供其他显示格式。

表 9.35. cidrinet 函数

函数 返回类型 描述 示例 结果
abbrev(inet) text 以文本表示的缩略显示格式 abbrev(inet '10.1.0.0/16') 10.1.0.0/16
abbrev(cidr) text 以文本表示的缩略显示格式 abbrev(cidr '10.1.0.0/16') 10.1/16
broadcast(inet) inet 网络的广播地址 broadcast('192.168.1.5/24') 192.168.1.255/24
family(inet) int 提取地址族;IPv4 为 4,IPv6 为 6 family('::1') 6
host(inet) text 以文本形式提取 IP 地址 host('192.168.1.5/24') 192.168.1.5
hostmask(inet) inet 构造网络的主机掩码 hostmask('192.168.23.20/30') 0.0.0.3
masklen(inet) int 提取网络掩码长度 masklen('192.168.1.5/24') 24
netmask(inet) inet 构造网络的网络掩码 netmask('192.168.1.5/24') 255.255.255.0
network(inet) cidr 提取地址的网络部分 network('192.168.1.5/24') 192.168.1.0/24
set_masklen(inet, int) inet 设置 inet 值的网络掩码长度 set_masklen('192.168.1.5/24', 16) 192.168.1.5/16
set_masklen(cidr, int) cidr 设置 cidr 值的网络掩码长度 set_masklen('192.168.1.0/24'::cidr, 16) 192.168.0.0/16
text(inet) text 以文本形式提取 IP 地址和网络掩码长度 text(inet '192.168.1.5') 192.168.1.5/32

任何 cidr 值都可以隐式或显式地转换为 inet;因此,上述处理 inet 的函数也适用于 cidr 值。(如果 inetcidr 各有单独的函数,是因为这两种情况下的行为应当不同。)也允许将 inet 值转换为 cidr。这样做时,网络掩码右侧的所有位都会被直接置零,以创建有效的 cidr 值。此外,还可以用普通的类型转换语法将文本值转换为 inetcidr:例如 inet(expression)colname::cidr

表 9.36列出了可用于 macaddr 类型的函数。函数 trunc(macaddr) 返回将最后 3 个字节置零的 MAC 地址。可以用余下的前缀确定制造商。

表 9.36. macaddr 函数

函数 返回类型 描述 示例 结果
trunc(macaddr) macaddr 将最后 3 个字节设为零 trunc(macaddr '12:34:56:78:90:ab') 12:34:56:00:00:00

macaddr 类型还支持按字典顺序比较的标准关系操作符(><= 等),以及用于按位非、与、或的位运算操作符(~&|)。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。