pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
表 9.34 shows the operators available for the cidr and inet types. 操作符<<、<<=、>>和>>=测试子网包含关系。它们只考虑两个地址的网络部分(忽略主机部分),并判断一个网络是否与另一个网络相同,或是另一个网络的子网。
表 9.34. cidr 和 inet 操作符
| 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' |
+ |
addition | inet '192.168.1.6' + 25 |
- |
subtraction | inet '192.168.1.43' - 36 |
- |
subtraction | inet '192.168.1.43' - inet '192.168.1.19' |
表 9.35列出了可用于 cidr 和 inet 类型的函数。abbrev、host 和 text 函数主要用于提供其他显示格式。
表 9.35. cidr 和 inet 函数
| Function | Return Type | 描述 | 示例 | Result |
|---|---|---|---|---|
|
text |
以文本表示的缩略显示格式 | abbrev(inet '10.1.0.0/16') |
10.1.0.0/16 |
|
text |
以文本表示的缩略显示格式 | abbrev(cidr '10.1.0.0/16') |
10.1/16 |
|
inet |
broadcast address for network | broadcast('192.168.1.5/24') |
192.168.1.255/24 |
|
int |
extract family of address; 4 for IPv4, 6 for IPv6 |
family('::1') |
6 |
|
text |
以 text 形式抽取 IP 地址 | host('192.168.1.5/24') |
192.168.1.5 |
|
inet |
构造网络的主机掩码 | hostmask('192.168.23.20/30') |
0.0.0.3 |
|
int |
抽取网络掩码长度 | masklen('192.168.1.5/24') |
24 |
|
inet |
构造网络的网络掩码 | netmask('192.168.1.5/24') |
255.255.255.0 |
|
cidr |
抽取地址的网络部分 | network('192.168.1.5/24') |
192.168.1.0/24 |
|
inet |
设置 cidr 值的网络掩码长度 |
set_masklen('192.168.1.5/24', 16) |
192.168.1.5/16 |
|
cidr |
设置 cidr 值的网络掩码长度 |
set_masklen('192.168.1.0/24'::cidr, 16) |
192.168.0.0/16 |
|
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.36列出了可用于 macaddr 类型的函数。函数 返回将最后 3 个字节置零的 MAC 地址。可以用余下的前缀确定制造商。trunc(macaddr)
表 9.36. macaddr 函数
| Function | Return Type | 描述 | 示例 | Result |
|---|---|---|---|---|
|
macaddr |
把最后 3 个字节设置为零 | trunc(macaddr '12:34:56:78:90:ab') |
12:34:56:00:00:00 |
macaddr类型还支持用于字典序排序的标准关系操作符(>、<=等)。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。