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

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 7.3 已结束支持。 请参阅 当前版本手册.

5.8. 网络地址数据类型 #

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

表 5.18. 网络地址数据类型

名字存储描述范围
cidr12字节IP networksvalid IPv4 networks
inet12字节IP hosts and networksvalid IPv4 hosts or networks
macaddr6字节MAC地址惯用格式

尚不支持 IPv6。

5.8.1. inet #

inet 类型在单个字段中保存一个 IP 主机地址以及可选的其所在子网的标识。子网标识由地址网络部分的位数(即“网络掩码”)表示。如果网络掩码是 32,则该值不表示子网而只表示单个主机。注意,如果你只想接受网络,应使用 cidr 类型而不是 inet。

此类型的输入格式是 x.x.x.x/y,其中 x.x.x.x 是一个 IP 地址,y 是网络掩码的位数。如果省略了 /y 部分,则网络掩码取 32,该值只表示单个主机。显示时,如果网络掩码为 32,则会省略 /y 部分。

5.8.2. cidr #

cidr 类型保存一个 IP 网络规范。输入和输出格式遵循无类别域间路由(Classless Internet Domain Routing)惯例。指定无类别网络的格式是 x.x.x.x/y,其中 x.x.x.x 是网络,y 是网络掩码的位数。如果省略 y,则按较老的有类别编号系统的假定来计算,但至少会大到包含输入中写出的所有八位组。

表 5.19展示了一些示例。

表 5.19. cidr 类型输入示例

CIDR 输入CIDR 显示abbrev(CIDR)
192.168.100.128/25192.168.100.128/25192.168.100.128/25
192.168/24192.168.0.0/24192.168.0/24
192.168/25192.168.0.0/25192.168.0.0/25
192.168.1192.168.1.0/24192.168.1/24
192.168192.168.0.0/24192.168.0/24
128.1128.1.0.0/16128.1/16
128128.0.0.0/16128.0/16
128.1.2128.1.2.0/24128.1.2/24
10.1.210.1.2.0/2410.1.2/24
10.110.1.0.0/1610.1/16
1010.0.0.0/810/8

5.8.3. inet vs cidr #

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

提示

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

5.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 地址映射为硬件制造商名称。

报告文档问题

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