PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.12. 网络地址函数和操作符

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 9.12. 网络地址函数和操作符 表 9.36展示了可以用于cidr和 inet类型的操作符。 操作符<<、<<=、 >>、>>=和 &&测试用于子网包含。它们只考虑两个地址的网 络部分(忽略任何主机部分),然后判断其中一个网络部分是等于另外一个或者是 另外一个的子网。

9.12. 网络地址函数和操作符

表 9.36展示了可以用于cidr和 inet类型的操作符。 操作符<<<<=、 >>>>=和 &&测试用于子网包含。它们只考虑两个地址的网 络部分(忽略任何主机部分),然后判断其中一个网络部分是等于另外一个或者是 另外一个的子网。

表 9.36. cidrinet操作符

操作符 描述 例子
< 小于 inet '192.168.1.5' < inet '192.168.1.6'
<= 小于等于 inet '192.168.1.5' <= inet '192.168.1.5'
= 等于 inet '192.168.1.5' = inet '192.168.1.5'
>= 大于等于 inet '192.168.1.5' >= inet '192.168.1.5'
> 大于 inet '192.168.1.5' > inet '192.168.1.4'
<> 不等于 inet '192.168.1.5' <> inet '192.168.1.4'
<< 被包含在内 inet '192.168.1.5' << inet '192.168.1/24'
<<= 被包含在内或等于 inet '192.168.1/24' <<= inet '192.168.1/24'
>> 包含 inet '192.168.1/24' >> inet '192.168.1.5'
>>= 包含或等于 inet '192.168.1/24' >>= inet '192.168.1/24'
&& 包含或者被包含contains or is contained by inet '192.168.1/24' && inet '192.168.1.80/28'
~ 按位 NOT ~ inet '192.168.1.6'
& 按位 AND inet '192.168.1.6' & inet '0.0.0.255'
| 按位 OR inet '192.168.1.6' | inet '0.0.0.255'
+ inet '192.168.1.6' + 25
- inet '192.168.1.43' - 36
- inet '192.168.1.43' - inet '192.168.1.19'

表 9.37展示了所有可以用于cidrinet类型的函数。函数abbrevhosttext主要是为了提供可选的显示格式用的。

表 9.37. cidrinet函数

函数 返回类型 描述 例子 结果
abbrev(inet) text 缩写显示格式文本 abbrev(inet '10.1.0.0/16') 10.1.0.0/16
abbrev(cidr) text 缩写显示格式文本 abbrev(cidr '10.1.0.0/16') 10.1/16
broadcast(inet) inet 网络广播地址 broadcast('192.168.1.5/24') 192.168.1.255/24
family(inet) int 抽取地址族;4为 IPv4, 6为 IPv6 family('::1') 6
host(inet) text 抽取 IP 地址为文本 host('192.168.1.5/24') 192.168.1.5
hostmask(inet) inet 为网络构造主机掩码 hostmask('192.168.23.20/30') 0.0.0.3
masklen(inet) int 抽取网络掩码长度 masklen('192.168.1.5/24') 24
netmask(inet) inet 为网络构造网络掩码 netmask('192.168.1.5/24') 255.255.255.0
network(inet) cidr 抽取地址的网络部分 network('192.168.1.5/24') 192.168.1.0/24
set_masklen(inetint) inet inet值设置网络掩码长度 set_masklen('192.168.1.5/24', 16) 192.168.1.5/16
set_masklen(cidrint) cidr cidr值设置网络掩码长度 set_masklen('192.168.1.0/24'::cidr, 16) 192.168.0.0/16
text(inet) text 抽取 IP 地址和网络掩码长度为文本 text(inet '192.168.1.5') 192.168.1.5/32
inet_same_family(inetinet) boolean 地址来自同一个网段吗? inet_same_family('192.168.1.5/24', '::1') false
inet_merge(inetinet) cidr 最小的网络包括给定的两个网络 inet_merge('192.168.1.5/24', '192.168.2.5/24') 192.168.0.0/22

任何cidr值都能够被隐式或显式地转换为inet值, 因此上述能够操作inet值的函数也同样能够操作cidr值(也有独立的用于inetcidr的函数,因为它的行为应当和这两种情况不同)。inet值也可以转换为cidr值。完成时,该网络掩码右侧的任何位都将无声地转换为零以获得一个有效的cidr值。另外,你还可以使用常规的造型语法将一个文本字符串转换为inetcidr值:例如,inet(expression)colname::cidr

表 9.38展示了可以用于macaddr类型的函数。 函数trunc(macaddr)返回一个 MAC 地址,该地址的最后三个字节设置为零。这样可以把剩下的前缀与一个制造商相关联。

表 9.38. macaddr函数

函数 返回类型 描述 例子 结果
trunc(macaddr) macaddr 设置最后3个字节为零 trunc(macaddr '12:34:56:78:90:ab') 12:34:56:00:00:00

macaddr类型还支持标准关系操作符 (><=等) 用于编辑次序,并且按位算术操作符(~&|)用于 NOT、AND 和 OR。

表 9.39显示了可用于macaddr8 类型的函数。trunc(macaddr8) 返回一个 MAC 地址,并将最后5个字节设置为零。这可以用来将剩余的前缀与制造商相关联。

表 9.39. macaddr8 函数

函数 返回类型 描述 示例 结果
trunc(macaddr8) macaddr8 将最后5个字节设置为零 trunc(macaddr8 '12:34:56:78:90:ab:cd:ef') 12:34:56:00:00:00:00:00
macaddr8_set7bit(macaddr8) macaddr8 将第7位设置为1,也称为修改的EUI-64,以包含在IPv6地址中 macaddr8_set7bit(macaddr8 '00:34:56:ab:cd:ef') 02:34:56:ff:fe:ab:cd:ef

macaddr8类型也支持标准的用于排序的关系操作符 (><=等), 和用于NOT、AND和OR的按位运算符(~、 &|)。

本文转自PostgreSQL中文社区,原文链接:9.12. 网络地址函数和操作符

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
29天前
|
SQL 存储 BI
【软件设计师备考 专题 】数据库语言(SQL)
【软件设计师备考 专题 】数据库语言(SQL)
90 0
|
12天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
74 6
|
8天前
|
SQL 数据库
数据库SQL语言实战(二)
数据库SQL语言实战(二)
|
1月前
|
网络协议 Linux C++
Linux C/C++ 网络编程中地址格式转换(inet_pton和inet_ntop函数)
Linux C/C++ 网络编程中地址格式转换(inet_pton和inet_ntop函数)
25 0
|
1月前
|
域名解析 缓存 网络协议
探索Qt 网络编程:网络地址与服务类全解析
探索Qt 网络编程:网络地址与服务类全解析
55 0
|
1月前
|
SQL 关系型数据库 MySQL
Flink 提供了一种名为 Flink SQL 的查询语言,它支持多种数据库之间的 DDL 语句转换
【2月更文挑战第18天】Flink 提供了一种名为 Flink SQL 的查询语言,它支持多种数据库之间的 DDL 语句转换
171 2
|
1月前
|
SQL 数据库 数据库管理
|
1月前
|
SQL 存储 关系型数据库
【MySQL】——关系数据库标准语言SQL(大纲)
【MySQL】——关系数据库标准语言SQL(大纲)
56 0
【MySQL】——关系数据库标准语言SQL(大纲)
|
1月前
|
SQL 关系型数据库 MySQL
Go语言与数据库基础交互:SQL篇
【2月更文挑战第13天】本文旨在探讨Go语言如何与数据库进行基础交互,特别关注使用SQL语言进行操作。我们将首先简要介绍Go语言与数据库的连接方式,然后详细讲解如何在Go中执行SQL查询、插入、更新和删除操作。此外,还将讨论如何处理查询结果以及处理可能遇到的错误和异常。
|
1月前
|
关系型数据库 PostgreSQL
postgresql日程排程函数的编写实例
postgresql日程排程函数的编写实例

热门文章

最新文章