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