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

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

3.8. 网络地址数据类型 #

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

表 3.19. 网络地址数据类型

名字 存储尺寸 描述 范围
cidr 12字节 IP 网络 有效的 IPv4 网络
inet 12字节 IP 主机和网络 有效的 IPv4 主机或网络
macaddr 6字节 MAC地址 惯用格式


尚不支持 IPv6。

3.8.1. inet #

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

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

3.8.2. cidr #

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

下面是一些示例:

表 3.20. 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


3.8.3. inet vs cidr #

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

提示

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

3.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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。