暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

PostgreSQL征途:数据类型之网络地址类型

0000.jpg

数据类型 别名 说明
cidr IPv4 或 IPv6 网络地址
inet IPv4 或 IPv6 主机地址
macaddr MAC(媒体访问控制)地址
macaddr8 MAC(媒体访问控制)地址(EUI-64格式)

inet

inet保存主机的IPv4或IPv6地址,以及一个可选的等效子网。该类型的输入格式是address/y,这里的address是IPv4或者IPv6地址y是子网掩码的二进制位数。如果/y部分未填,则子网掩码对IPv4而言是32对IPv6而言是128,所以该值表示只有一台主机。显示时,如果该值表示只有一台主机,/y将不会显示。

select inet'192.168.31/24'; select inet'192.168.31.1/32'; select inet'192.168.31.1';

pg0145.png

cidr

基本和inet相同,inet和cidr类型之间的基本区别是inet接受子网掩码,而cidr不接受。

select cidr'192.168.31/24'; select cidr'192.168.31.1/32'; select cidr'192.168.31.1';

pg0146.png

# inet和cidr类型都可以用于存储一个IPv4或IPv6的地址 select '192.168.1.100'::inet; select '192.168.1.100'::cidr;

pg0147.png

# cidr总是对地址与掩码之间的关系进行检查,如果不正确会报错 select '192.168.1.100/16'::inet; select '192.168.1.100/16'::cidr;

pg0148.png

macaddr

macaddr类型用于存储以太网的MAC地址,可以接受多种自定义格式。

select '00e04c757d5a'::macaddr; select '00e04c:757d5a'::macaddr; select '00-e0-4c-75-7d-5a'::macaddr;

pg0149.png

cidr和inet操作符

操作符 描述 示例 结果
< 小于 select inet ‘192.168.1.5’ < inet ‘192.168.1.6’; t
<= 小于或等于 select inet ‘192.168.1.5’ <= inet ‘192.168.1.5’; t
= 等于 select inet ‘192.168.1.5’ = inet ‘192.168.1.5’; t
>= 大于或等于 select inet ‘192.168.1.5’ >= inet ‘192.168.1.5’; t
> 大于 select inet ‘192.168.1.5’ > inet ‘192.168.1.4’; t
<> 不等于 select inet ‘192.168.1.5’ <> inet ‘192.168.1.4’; t
<< 包含于 select inet ‘192.168.1.5’ << inet ‘192.168.1/24’; t
<<= 包含于或等于 select inet ‘192.168.1/24’ <<= inet ‘192.168.1/24’; t
>> 包含 select inet ‘192.168.1/24’ >> inet ‘192.168.1.5’; t
>>= 包含或等于 select inet ‘192.168.1/24’ >>= inet ‘192.168.1/24’; t
&& 包含或包含于 select inet ‘192.168.1/24’ && inet ‘192.168.1.80/28’; t
~ 位非 select ~ inet ‘192.168.1.6’; 63.87.254.249
& 位与 select inet ‘192.168.1.6’ & inet ‘0.0.0.255’; 0.0.0.6
| 位或 select inet ‘192.168.1.6’ | inet ‘0.0.0.255’; 192.168.1.255
+ select inet ‘192.168.1.6’ + 25; 192.168.1.31
- select inet ‘192.168.1.43’ - 36; 192.168.1.7
- select inet ‘192.168.1.43’ - inet ‘192.168.1.19’; 24

pg0150.png

pg0151.png

cidr和inet函数

函数 返回类型 描述 示例 结果
abbrev(inet) text 显示为文本格式 select abbrev(inet ‘10.1.0.0/16’); 10.1.0.0/16
abbrev(cidr) text 显示为文本格式 select abbrev(cidr ‘10.1.0.0/16’); 10.1/16
broadcast(inet) inet 网络广播地址 select broadcast(‘192.168.1.5/24’); 192.168.1.255/24
family(inet) int 获取地址族,4位IPv4,6为IPv6 select family(’::1’); 6
host(inet) text 抽取IP地址,并以text显示 select host(‘192.168.1.5/24’); 192.168.1.5
hostmask(inet) inet 为网络构造主机掩码 select hostmask(‘192.168.23.20/30’); 0.0.0.3
masklen(inet) int 抽取掩码长度 select masklen(‘192.168.1.5/24’); 24
netmask(inet) inet 为网络构造子网掩码 select netmask(‘192.168.1.5/24’); 255.255.255.0
network(inet) cidr 抽取地址的网络部分 select network(‘192.168.1.5/24’); 192.168.1.0/24
set_masklen(inet, int) inet 为inet设置子网掩码长度 select set_masklen(‘192.168.1.5/24’, 16); 192.168.1.5/16
set_masklen(cidr, int) cidr 为cidr设置子网掩码长度 select set_masklen(‘192.168.1.0/24’::cidr, 16); 192.168.0.0/16
text(inet) text 将IP地址和掩码长度抽取为文本 select text(inet ‘192.168.1.5’); 192.168.1.5/32
inet_same_family(inet, inet) boolean 是否属于相同的地址族 select inet_same_family(‘192.168.1.5/24’, ‘::1’); f
inet_merge(inet, inet) cidr 包括两个入参地址的最小网络地址 select inet_merge(‘192.168.1.5/24’, ‘192.168.2.5/24’); 192.168.0.0/22

pg0152.png

pg0153.png

macaddr函数

函数 返回类型 描述 示例 结果
trunc(macaddr) macaddr 将mac地址后3个字节设置为0 select trunc(macaddr ‘12:34:56:78:90:ab’); 12:34:56:00:00:00

pg0154.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论