网络地址类型函数和操作符

From PostgreSQL 中文维基, PostgreSQL 中文站, PostgreSQL 中国社区, PostgreSQL Chinese community

Jump to: navigation, search

[编辑] 网络地址类型函数和操作符

表 9-31 显示了可以用于 cidr 和 inet 的操作符。 操作符 <<,<<= >>,和 >>= 用于计算子网包含:它们只考虑两个地址的网络部分,忽略任何主机部分, 然后判断其中一个网络部分是等于另外一个还是另外一个的子网。

表 9-31. cidr 和 inet 操作符
操作符 描述 例子
< 小于吗 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'

表 9-32 显示了所有可以用于 cidr 和 inet 的函数。 函数 host,text 和 abbrev 主要是为了提供可选的显示格式用的。 你可以用普通的类型转换语法∶ inet(expression) 或者 colname::inet 把一个文本数域转换成inet。

表 9-32. cidr 和 inet 函数
函数 返回类型 描述 例子 结果
broadcast(inet) inet 网络广播地址 broadcast('192.168.1.5/24') 192.168.1.255/24
host(inet) text 将主机地址类型抽出为文本 host('192.168.1.5/24') 192.168.1.5
masklen(inet) int 抽取网络掩码长度 masklen('192.168.1.5/24') 24
set_masklen(inet,int) inet 为inet数值设置网络掩码长度 set_masklen('192.168.1.5/24',16) 192.168.1.5/16
netmask(inet) inet 为网络构造网络掩码 netmask('192.168.1.5/24') 255.255.255.0
hostmask(inet) inet 为网络构造主机掩码 hostmask('192.168.23.20/30') 0.0.0.3
network(inet) cidr 抽取地址的网络部分 network('192.168.1.5/24') 192.168.1.0/24
text(inet) text 把 IP 地址和掩码长度抽取为文本 text(inet '192.168.1.5') 192.168.1.5/32
abbrev(inet) text 抽取缩写显示为文本 abbrev(cidr '10.1.0.0/16') 10.1/16
family(inet) int 抽取地址族 4 for IPv4, 6 for IPv6 family('::1') 6

表 9-33 显示了可以用于 macaddr 类型的函数。 函数 trunc(macaddr) 返回一个 MAC 地址,该地址的最后三个字节设置为零。 这样可以把剩下的前缀与一个制造商相关联。 源程序目录 contrib/mac 里有一些用于创建和维护这样的 关联表的工具。

表 9-33. macaddr 函数
函数 返回类型 描述 例子 结果
trunc(macaddr) macaddr 把后三个字节置为零 trunc(macaddr '12:34:56:78:90:ab') 12:34:56:00:00:00

macaddr 类型还支持标准关系操作符 (>,<=,等) 用于词法排序。

Personal tools