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

简介: 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
监控 安全
从 Racket 语言出发,创新员工网络监控软件的框架
在数字化企业环境中,员工网络监控软件对于保障信息安全和提升效率至关重要。Racket 语言凭借其独特特性和强大功能,为开发创新的监控软件提供了新可能。通过捕获和分析网络数据包、记录员工网络活动日志,甚至构建复杂的监控框架,Racket 能够满足企业的定制化需求,为企业信息安全和管理提供强有力支持。未来,基于 Racket 的创新解决方案将不断涌现。
212 6
|
6月前
|
C++
基于Reactor模型的高性能网络库之地址篇
这段代码定义了一个 InetAddress 类,是 C++ 网络编程中用于封装 IPv4 地址和端口的常见做法。该类的主要作用是方便地表示和操作一个网络地址(IP + 端口)
337 58
|
6月前
基于Reactor模式的高性能网络库github地址
https://github.com/zyi30/reactor-net.git
169 0
|
10月前
|
监控 算法 安全
基于 PHP 语言深度优先搜索算法的局域网网络监控软件研究
在当下数字化时代,局域网作为企业与机构内部信息交互的核心载体,其稳定性与安全性备受关注。局域网网络监控软件随之兴起,成为保障网络正常运转的关键工具。此类软件的高效运行依托于多种数据结构与算法,本文将聚焦深度优先搜索(DFS)算法,探究其在局域网网络监控软件中的应用,并借助 PHP 语言代码示例予以详细阐释。
233 1
|
7月前
|
存储 关系型数据库 测试技术
拯救海量数据:PostgreSQL分区表性能优化实战手册(附压测对比)
本文深入解析PostgreSQL分区表的核心原理与优化策略,涵盖性能痛点、实战案例及压测对比。首先阐述分区表作为继承表+路由规则的逻辑封装,分析分区裁剪失效、全局索引膨胀和VACUUM堆积三大性能杀手,并通过电商订单表崩溃事件说明旧分区维护的重要性。接着提出四维设计法优化分区策略,包括时间范围分区黄金法则与自动化维护体系。同时对比局部索引与全局索引性能,展示后者在特定场景下的优势。进一步探讨并行查询优化、冷热数据分层存储及故障复盘,解决分区锁竞争问题。
992 2
|
11月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
428 20
|
11月前
|
网络协议 算法 安全
Go语言的网络编程与TCP_UDP
Go语言由Google开发,旨在简单、高效和可扩展。本文深入探讨Go语言的网络编程,涵盖TCP/UDP的基本概念、核心算法(如滑动窗口、流量控制等)、最佳实践及应用场景。通过代码示例展示了TCP和UDP的实现,并讨论了其在HTTP、DNS等协议中的应用。最后,总结了Go语言网络编程的未来发展趋势与挑战,推荐了相关工具和资源。
363 5
|
安全 网络协议 Go
Go语言网络编程
【10月更文挑战第28天】Go语言网络编程
337 65
|
11月前
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
376 0
|
数据采集 监控 安全
公司网络监控软件:Zig 语言底层优化保障系统高性能运行
在数字化时代,Zig 语言凭借出色的底层控制能力和高性能特性,为公司网络监控软件的优化提供了有力支持。从数据采集、连接管理到数据分析,Zig 语言确保系统高效稳定运行,精准处理海量网络数据,保障企业信息安全与业务连续性。
243 4

推荐镜像

更多