pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
PostgreSQL 提供存储 IP 和 MAC 地址的数据类型。最好使用这些类型而不是普通文本类型,因为这些类型提供输入错误检查和若干专用的运算符与函数。
表 3.19. 网络地址数据类型
| 名字 | 存储尺寸 | 描述 | 范围 |
|---|---|---|---|
cidr |
12字节 | IP 网络 | 有效的 IPv4 网络 |
inet |
12字节 | IP 主机和网络 | 有效的 IPv4 主机或网络 |
macaddr |
6字节 | MAC地址 | 惯用格式 |
尚不支持 IPv6。
inet #inet 类型在单个字段中保存一个 IP 主机地址以及可选的其所在子网的标识。子网标识由地址网络部分的位数(即“网络掩码”)表示。如果网络掩码是 32,则该值不表示子网而只表示单个主机。注意,如果你只想接受网络,应使用 cidr 类型而不是 inet。
此类型的输入格式是 x.x.x.x/y,其中 x.x.x.x 是一个 IP 地址, y 是网络掩码的位数。如果省略了 /y 部分,则网络掩码取 32,该值只表示单个主机。显示时,如果网络掩码为 32,则会省略 /y 部分。
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 |
inet vs cidr #inet 和 cidr 两种数据类型的本质区别在于: inet 接受网络掩码右侧仍含有非零位的值,而 cidr 不接受。
如果你不喜欢 inet 或 cidr 值的输出格式,可以试试 host()、 text() 和 abbrev() 函数。
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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。