网络地址函数和操作符

    • <

      描述:小于

      示例:

    • <=

      描述:小于或等于

      示例:

      1. result
      2. --------
      3. t
      4. (1 row)
    • \=

      描述:等于

      示例:

      1. postgres=# SELECT inet '192.168.1.5' = inet '192.168.1.5' AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • >=

      描述:大于或等于

      示例:

      1. postgres=# SELECT inet '192.168.1.5' >= inet '192.168.1.5' AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • >

      描述:大于

      示例:

      1. postgres=# SELECT inet '192.168.1.5' > inet '192.168.1.4' AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • <>

      描述:不等于

      示例:

      1. postgres=# SELECT inet '192.168.1.5' <> inet '192.168.1.4' AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • <<

      描述:包含于

      示例:

      1. postgres=# SELECT inet '192.168.1.5' << inet '192.168.1/24' AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • <<=

      描述:包含于或等于

      示例:

      1. postgres=# SELECT inet '192.168.1/24' <<= inet '192.168.1/24' AS RESULT;
      2. result
      3. --------
      4. t
      5. (1 row)
    • >>

      描述:包含

      示例:

      1. postgres=# SELECT inet '192.168.1/24' >> inet '192.168.1.5' AS RESULT;
      2. result
      3. --------
      4. t
    • >>=

      描述:包含或等于

      示例:

    • ~

      描述:位非

      示例:

      1. postgres=# SELECT ~ inet '192.168.1.6' AS RESULT;
      2. ---------------
      3. 63.87.254.249
      4. (1 row)
    • 描述:两个网络地址的每一位都进行“与”操作。

      示例:

      1. postgres=# SELECT inet '192.168.1.6' & inet '10.0.0.0' AS RESULT;
      2. result
      3. ---------
      4. 0.0.0.0
      5. (1 row)
    • |

      描述:两个网络地址的每一位都进行“或”操作。

      示例:

      1. postgres=# SELECT inet '192.168.1.6' | inet '10.0.0.0' AS RESULT;
      2. result
      3. -------------
      4. 202.168.1.6
      5. (1 row)
    • 描述:加

      示例:

      1. postgres=# SELECT inet '192.168.1.6' + 25 AS RESULT;
      2. result
      3. --------------
      4. 192.168.1.31
      5. (1 row)
    • 描述:减

      示例:

      1. postgres=# SELECT inet '192.168.1.43' - 36 AS RESULT;
      2. result
      3. -------------
      4. 192.168.1.7
      5. (1 row)
    • 描述:减

      示例:

      1. postgres=# SELECT inet '192.168.1.43' - inet '192.168.1.19' AS RESULT;
      2. result
      3. --------
      4. 24
      5. (1 row)

    函数abbrev,host,text主要是为了提供可选的显示格式。

    • abbrev(inet)

      描述:缩写显示格式文本。

      返回类型:text

      示例:

      1. postgres=# SELECT abbrev(inet '10.1.0.1/16') AS RESULT;
      2. result
      3. -------------
      4. 10.1.0.1/16
      5. (1 row)
    • abbrev(cidr)

      描述:缩写显示格式文本。

      返回类型:text

      示例:

      1. postgres=# SELECT abbrev(cidr '10.1.0.1/16') AS RESULT;
      2. result
      3. ---------
      4. 10.1/16
      5. (1 row)
    • broadcast(inet)

      描述:网络广播地址。

      返回类型:inet

      示例:

    • family(inet)

      描述:抽取地址族,4为IPv4,6为IPv6。

      返回类型:int

      示例:

      1. result
      2. 6
      3. (1 row)
    • host(inet)

      描述:将主机地址类型抽出为文本。

      返回类型:text

      示例:

      1. postgres=# SELECT host('192.168.1.5/24') AS RESULT;
      2. result
      3. -------------
      4. 192.168.1.5
      5. (1 row)
    • hostmask(inet)

      返回类型:inet

      示例:

      1. postgres=# SELECT hostmask('192.168.23.20/30') AS RESULT;
      2. result
      3. ---------
      4. 0.0.0.3
      5. (1 row)
    • masklen(inet)

      描述:抽取子网掩码长度。

      返回类型:int

      示例:

      1. postgres=# SELECT masklen('192.168.1.5/24') AS RESULT;
      2. result
      3. --------
      4. 24
      5. (1 row)
    • netmask(inet)

      描述:为网络构造子网掩码。

      返回类型:inet

      示例:

      1. postgres=# SELECT netmask('192.168.1.5/24') AS RESULT;
      2. result
      3. ---------------
      4. 255.255.255.0
      5. (1 row)
    • network(inet)

      描述:抽取地址的网络部分。

      返回类型:cidr

      示例:

      1. postgres=# SELECT network('192.168.1.5/24') AS RESULT;
      2. result
      3. ----------------
      4. 192.168.1.0/24
      5. (1 row)
    • set_masklen(inet, int)

      描述:为inet数值设置子网掩码长度。

      返回类型:inet

      示例:

      1. postgres=# SELECT set_masklen('192.168.1.5/24', 16) AS RESULT;
      2. result
      3. ----------------
      4. 192.168.1.5/16
      5. (1 row)
    • set_masklen(cidr, int)

      描述:为cidr数值设置子网掩码长度。

      返回类型:cidr

      示例:

      1. postgres=# SELECT set_masklen('192.168.1.0/24'::cidr, 16) AS RESULT;
      2. result
      3. ----------------
      4. 192.168.0.0/16
      5. (1 row)
    • text(inet)

      描述:把IP地址和掩码长度抽取为文本。

      返回类型:text

      示例:

    任何cidr值都能以显式或者隐式的方式转换为inet值,因此上述能够操作inet值的函数也同样能够操作cidr值。inet值也可以转换为cidr值,此时inet子网掩码右侧的所有位都将转换为零,以创建一个有效的cidr值。另外,用户还可以使用常规的类型转换语法将一个文本字符串转换为inet或cidr值。例如:inet(expression)或colname::cidr。

    函数trunc(macaddr)返回一个MAC地址,该地址的最后三个字节设置为零。

    trunc(macaddr)

    描述:把后三个字节置为零。

    返回类型:macaddr

    示例:

    1. postgres=# SELECT trunc(macaddr '12:34:56:78:90:ab') AS RESULT;
    2. result
    3. -------------------

    macaddr类型还支持标准关系操作符(>,<=等)用于词法排序,和按位运算符(~,&和|)非,与和或。