↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本。 PostgreSQL 8.3 已结束支持。 请参阅 当前版本手册.

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

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

表 9.32. cidr and inet Operators

Operator描述示例
< 小于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'
+ additioninet '192.168.1.6' + 25
- subtractioninet '192.168.1.43' - 36
- subtractioninet '192.168.1.43' - inet '192.168.1.19'

表 9.33列出了可用于 cidr 和 inet 类型的函数。abbrev、host 和 text 函数主要用于提供其他显示格式。

表 9.33. cidr and inet Functions

FunctionReturn Type描述示例Result
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)inetbroadcast address for networkbroadcast('192.168.1.5/24')192.168.1.255/24
family(inet)intextract family of address; 4 for IPv4, 6 for IPv6family('::1')6
host(inet)text以 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设置 cidr 值的网络掩码长度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以 text 形式抽取 IP 地址和网络掩码长度text(inet '192.168.1.5')192.168.1.5/32

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

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

表 9.34. macaddr Functions

FunctionReturn Type描述示例Result
trunc(macaddr)macaddr把最后 3 个字节设置为零trunc(macaddr '12:34:56:78:90:ab')12:34:56:00:00:00

macaddr类型还支持用于字典序排序的标准关系操作符(>、<=等)。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.