网络地址函数
函数abbrev,host,text主要是为了提供可选的显示格式。
任何cidr值都能以显式或者隐式的方式转换为inet值,因此能够操作inet值的函数也同样能够操作cidr值。inet值也可以转换为cidr值,此时inet子网掩码右侧的所有位都将转换为零,以创建一个有效的cidr值。另外,用户还可以使用常规的类型转换语法将一个文本字符串转换为inet或cidr值。例如:inet(expression)或colname::cidr。
abbrev(inet)
描述:缩写显示格式文本。
返回类型:text
示例:
1 2 3 4 5 |
SELECT abbrev(inet '10.1.0.0/16') AS RESULT; result ------------- 10.1.0.0/16 (1 row) |
abbrev(cidr)
描述:缩写显示格式文本。
返回类型:text
示例:
1 2 3 4 5 |
SELECT abbrev(cidr '10.1.0.0/16') AS RESULT; result --------- 10.1/16 (1 row) |
broadcast(inet)
描述:网络广播地址。
返回类型:inet
示例:
1 2 3 4 5 |
SELECT broadcast('192.168.1.5/24') AS RESULT; result ------------------ 192.168.1.255/24 (1 row) |
family(inet)
描述:抽取地址族,4为IPv4,6为IPv6。
返回类型:int
示例:
1 2 3 4 5 |
SELECT family('::1') AS RESULT; result -------- 6 (1 row) |
host(inet)
描述:将主机地址类型抽出为文本。
返回类型:text
示例:
1 2 3 4 5 |
SELECT host('192.168.1.5/24') AS RESULT; result ------------- 192.168.1.5 (1 row) |
hostmask(inet)
描述:为网络构造主机掩码。
返回类型:inet
示例:
1 2 3 4 5 |
SELECT hostmask('192.168.23.20/30') AS RESULT; result --------- 0.0.0.3 (1 row) |
masklen(inet)
描述:抽取子网掩码长度。
返回类型:int
示例:
1 2 3 4 5 |
SELECT masklen('192.168.1.5/24') AS RESULT; result -------- 24 (1 row) |
netmask(inet)
描述:为网络构造子网掩码。
返回类型:inet
示例:
1 2 3 4 5 |
SELECT netmask('192.168.1.5/24') AS RESULT; result --------------- 255.255.255.0 (1 row) |
network(inet)
描述:抽取地址的网络部分。
返回类型:cidr
示例:
1 2 3 4 5 |
SELECT network('192.168.1.5/24') AS RESULT; result ---------------- 192.168.1.0/24 (1 row) |
set_masklen(inet, int)
描述:为inet数值设置子网掩码长度。
返回类型:inet
示例:
1 2 3 4 5 |
SELECT set_masklen('192.168.1.5/24', 16) AS RESULT; result ---------------- 192.168.1.5/16 (1 row) |
set_masklen(cidr, int)
描述:为cidr数值设置子网掩码长度。
返回类型:cidr
示例:
1 2 3 4 5 |
SELECT set_masklen('192.168.1.0/24'::cidr, 16) AS RESULT; result ---------------- 192.168.0.0/16 (1 row) |
text(inet)
描述:把IP地址和掩码长度抽取为文本。
返回类型:text
示例:
1 2 3 4 5 |
SELECT text(inet '192.168.1.5') AS RESULT; result ---------------- 192.168.1.5/32 (1 row) |
trunc(macaddr)
函数trunc(macaddr)返回一个MAC地址,该地址的最后三个字节设置为零。
描述:把后三个字节置为零。
返回类型:macaddr
示例:
1 2 3 4 5 |
SELECT trunc(macaddr '12:34:56:78:90:ab') AS RESULT; result ------------------- 12:34:56:00:00:00 (1 row) |
macaddr类型还支持标准关系操作符(>,<=等)用于词法排序,和按位运算符(~,&和|)非,与和或。