↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

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 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本PostgreSQL 7.4 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

8.8. 网络地址类型 #

PostgreSQL 提供存储 IPv4、IPv6 和 MAC 地址的数据类型,如 表 8.17 所示。 最好使用这些类型而不是普通文本类型,因为这些类型提供输入错误检查和若干专用的运算符与函数。

表 8.17. 网络地址类型

名字 存储尺寸 描述
cidr 12或24字节 IPv4 或 IPv6 网络
inet 12或24字节 IPv4和IPv6主机以及网络
macaddr 6字节 MAC地址

在对 inet 或 cidr 数据类型排序时,IPv4 地址总是排在 IPv6 地址之前,即使后者是封装或映射 IPv4 地址所得的 IPv6 地址,例如 ::10.2.3.4 或 ::ffff:10.4.3.2。

8.8.1. inet #

inet 类型在单个字段中保存一个 IPv4 或 IPv6 主机地址,以及可选的其所在子网的标识。 子网标识通过说明主机地址中有多少位表示网络地址(即“网络掩码”)来表达。如果网络掩码是 32 且地址是 IPv4,该值就不表示子网而只表示单个主机。在 IPv6 中,地址长 128 位,因此 128 位将指定唯一的主机地址。注意,如果你只想接受网络,应使用 cidr 类型而不是 inet。

此类型的输入格式是 address/y,其中 address 是一个 IPv4 或 IPv6 地址, y 是网络掩码的位数。如果省略了 /y 部分,则 IPv4 的网络掩码为 32、IPv6 的为 128,该值只表示单个主机。显示时,如果网络掩码指定的是单个主机,则会省略 /y 部分。

8.8.2. cidr #

cidr 类型保存 IPv4 或 IPv6 网络说明。输入和输出格式 遵循无类别域间路由(CIDR)约定。指定网络的格式为 address/y,其中 address 是网络的 IPv4 或 IPv6 表示,而 y 是网络掩码中的位数。 如果省略 y,则会按照旧式 的分类网络编号系统假设来计算,但至少会大到足以覆盖输入中写出的 所有八位组。若指定的网络地址在所给网络掩码右侧仍有置位比特,则会 报错。

表 8.18展示了一些示例。

表 8.18. cidr 类型输入示例

cidr输入 cidr输出 abbrev(cidr)
192.168.100.128/25 192.168.100.128/25 192.168.100.128/25
192.168/24 192.168.0.0/24 192.168.0/24
192.168/25 192.168.0.0/25 192.168.0.0/25
192.168.1 192.168.1.0/24 192.168.1/24
192.168 192.168.0.0/24 192.168.0/24
128.1 128.1.0.0/16 128.1/16
128 128.0.0.0/16 128.0/16
128.1.2 128.1.2.0/24 128.1.2/24
10.1.2 10.1.2.0/24 10.1.2/24
10.1 10.1.0.0/16 10.1/16
10 10.0.0.0/8 10/8
10.1.2.3/32 10.1.2.3/32 10.1.2.3/32
2001:4f8:3:ba::/64 2001:4f8:3:ba::/64 2001:4f8:3:ba::/64
2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 2001:4f8:3:ba:2e0:81ff:fe22:d1f1
::ffff:1.2.3.0/120 ::ffff:1.2.3.0/120 ::ffff:1.2.3/120
::ffff:1.2.3.0/128 ::ffff:1.2.3.0/128 ::ffff:1.2.3.0/128

8.8.3. inet vs. cidr #

inet 和 cidr 两种数据类型的本质区别在于: inet 接受网络掩码右侧仍含有非零位的值,而 cidr 不接受。

提示

如果你不喜欢 inet 或 cidr 值的输出 格式,可以试试 host、text 和 abbrev 函数。

8.8.4. macaddr #

macaddr 类型存储 MAC 地址,即以太网卡硬件地址(尽管 MAC 地址也用于其他目的)。输入接受多种惯用格式,包括

'08002b:010203'
'08002b-010203'
'0800.2b01.0203'
'08-00-2b-01-02-03'
'08:00:2b:01:02:03'

它们都表示同一个地址。数字 a 到 f 大小写均可接受。输出总是采用所示形式中的最后一种。

PostgreSQL 源码分发中的 contrib/mac 目录包含一些工具, 可以用来把 MAC 地址映射为硬件制造商名称。

提交更正

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