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

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.3 已于 2007 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

5.8. 网络地址数据类型 #

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

表 5.18. 网络地址数据类型

名字 存储 描述 范围
cidr 12字节 IP networks valid IPv4 networks
inet 12字节 IP hosts and networks valid IPv4 hosts or networks
macaddr 6字节 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/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

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

提交更正

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