gooderp18绿色标准版
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

102 行
17KB

  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>9.12. Network Address Functions and Operators</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="functions-geometry.html" title="9.11. Geometric Functions and Operators" /><link rel="next" href="functions-textsearch.html" title="9.13. Text Search Functions and Operators" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">9.12. Network Address Functions and Operators</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="functions-geometry.html" title="9.11. Geometric Functions and Operators">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="functions.html" title="Chapter 9. Functions and Operators">Up</a></td><th width="60%" align="center">Chapter 9. Functions and Operators</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 12.4 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="functions-textsearch.html" title="9.13. Text Search Functions and Operators">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="FUNCTIONS-NET"><div class="titlepage"><div><div><h2 class="title" style="clear: both">9.12. Network Address Functions and Operators</h2></div></div></div><p>
  3. <a class="xref" href="functions-net.html#CIDR-INET-OPERATORS-TABLE" title="Table 9.37. cidr and inet Operators">Table 9.37</a> shows the operators
  4. available for the <code class="type">cidr</code> and <code class="type">inet</code> types.
  5. The operators <code class="literal">&lt;&lt;</code>,
  6. <code class="literal">&lt;&lt;=</code>, <code class="literal">&gt;&gt;</code>,
  7. <code class="literal">&gt;&gt;=</code>, and <code class="literal">&amp;&amp;</code>
  8. test for subnet inclusion. They
  9. consider only the network parts of the two addresses (ignoring any
  10. host part) and determine whether one network is identical to
  11. or a subnet of the other.
  12. </p><div class="table" id="CIDR-INET-OPERATORS-TABLE"><p class="title"><strong>Table 9.37. <code class="type">cidr</code> and <code class="type">inet</code> Operators</strong></p><div class="table-contents"><table class="table" summary="cidr and inet Operators" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Operator</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td> <code class="literal">&lt;</code> </td><td>is less than</td><td><code class="literal">inet '192.168.1.5' &lt; inet '192.168.1.6'</code></td></tr><tr><td> <code class="literal">&lt;=</code> </td><td>is less than or equal</td><td><code class="literal">inet '192.168.1.5' &lt;= inet '192.168.1.5'</code></td></tr><tr><td> <code class="literal">=</code> </td><td>equals</td><td><code class="literal">inet '192.168.1.5' = inet '192.168.1.5'</code></td></tr><tr><td> <code class="literal">&gt;=</code> </td><td>is greater or equal</td><td><code class="literal">inet '192.168.1.5' &gt;= inet '192.168.1.5'</code></td></tr><tr><td> <code class="literal">&gt;</code> </td><td>is greater than</td><td><code class="literal">inet '192.168.1.5' &gt; inet '192.168.1.4'</code></td></tr><tr><td> <code class="literal">&lt;&gt;</code> </td><td>is not equal</td><td><code class="literal">inet '192.168.1.5' &lt;&gt; inet '192.168.1.4'</code></td></tr><tr><td> <code class="literal">&lt;&lt;</code> </td><td>is contained by</td><td><code class="literal">inet '192.168.1.5' &lt;&lt; inet '192.168.1/24'</code></td></tr><tr><td> <code class="literal">&lt;&lt;=</code> </td><td>is contained by or equals</td><td><code class="literal">inet '192.168.1/24' &lt;&lt;= inet '192.168.1/24'</code></td></tr><tr><td> <code class="literal">&gt;&gt;</code> </td><td>contains</td><td><code class="literal">inet '192.168.1/24' &gt;&gt; inet '192.168.1.5'</code></td></tr><tr><td> <code class="literal">&gt;&gt;=</code> </td><td>contains or equals</td><td><code class="literal">inet '192.168.1/24' &gt;&gt;= inet '192.168.1/24'</code></td></tr><tr><td> <code class="literal">&amp;&amp;</code> </td><td>contains or is contained by</td><td><code class="literal">inet '192.168.1/24' &amp;&amp; inet '192.168.1.80/28'</code></td></tr><tr><td> <code class="literal">~</code> </td><td>bitwise NOT</td><td><code class="literal">~ inet '192.168.1.6'</code></td></tr><tr><td> <code class="literal">&amp;</code> </td><td>bitwise AND</td><td><code class="literal">inet '192.168.1.6' &amp; inet '0.0.0.255'</code></td></tr><tr><td> <code class="literal">|</code> </td><td>bitwise OR</td><td><code class="literal">inet '192.168.1.6' | inet '0.0.0.255'</code></td></tr><tr><td> <code class="literal">+</code> </td><td>addition</td><td><code class="literal">inet '192.168.1.6' + 25</code></td></tr><tr><td> <code class="literal">-</code> </td><td>subtraction</td><td><code class="literal">inet '192.168.1.43' - 36</code></td></tr><tr><td> <code class="literal">-</code> </td><td>subtraction</td><td><code class="literal">inet '192.168.1.43' - inet '192.168.1.19'</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
  13. <a class="xref" href="functions-net.html#CIDR-INET-FUNCTIONS-TABLE" title="Table 9.38. cidr and inet Functions">Table 9.38</a> shows the functions
  14. available for use with the <code class="type">cidr</code> and <code class="type">inet</code>
  15. types. The <code class="function">abbrev</code>, <code class="function">host</code>,
  16. and <code class="function">text</code>
  17. functions are primarily intended to offer alternative display
  18. formats.
  19. </p><div class="table" id="CIDR-INET-FUNCTIONS-TABLE"><p class="title"><strong>Table 9.38. <code class="type">cidr</code> and <code class="type">inet</code> Functions</strong></p><div class="table-contents"><table class="table" summary="cidr and inet Functions" border="1"><colgroup><col /><col /><col /><col /><col /></colgroup><thead><tr><th>Function</th><th>Return Type</th><th>Description</th><th>Example</th><th>Result</th></tr></thead><tbody><tr><td>
  20. <a id="id-1.5.8.17.5.2.2.1.1.1" class="indexterm"></a>
  21. <code class="literal"><code class="function">abbrev(<code class="type">inet</code>)</code></code>
  22. </td><td><code class="type">text</code></td><td>abbreviated display format as text</td><td><code class="literal">abbrev(inet '10.1.0.0/16')</code></td><td><code class="literal">10.1.0.0/16</code></td></tr><tr><td><code class="literal"><code class="function">abbrev(<code class="type">cidr</code>)</code></code></td><td><code class="type">text</code></td><td>abbreviated display format as text</td><td><code class="literal">abbrev(cidr '10.1.0.0/16')</code></td><td><code class="literal">10.1/16</code></td></tr><tr><td>
  23. <a id="id-1.5.8.17.5.2.2.3.1.1" class="indexterm"></a>
  24. <code class="literal"><code class="function">broadcast(<code class="type">inet</code>)</code></code>
  25. </td><td><code class="type">inet</code></td><td>broadcast address for network</td><td><code class="literal">broadcast('192.168.1.5/24')</code></td><td><code class="literal">192.168.1.255/24</code></td></tr><tr><td>
  26. <a id="id-1.5.8.17.5.2.2.4.1.1" class="indexterm"></a>
  27. <code class="literal"><code class="function">family(<code class="type">inet</code>)</code></code>
  28. </td><td><code class="type">int</code></td><td>extract family of address; <code class="literal">4</code> for IPv4,
  29. <code class="literal">6</code> for IPv6</td><td><code class="literal">family('::1')</code></td><td><code class="literal">6</code></td></tr><tr><td>
  30. <a id="id-1.5.8.17.5.2.2.5.1.1" class="indexterm"></a>
  31. <code class="literal"><code class="function">host(<code class="type">inet</code>)</code></code>
  32. </td><td><code class="type">text</code></td><td>extract IP address as text</td><td><code class="literal">host('192.168.1.5/24')</code></td><td><code class="literal">192.168.1.5</code></td></tr><tr><td>
  33. <a id="id-1.5.8.17.5.2.2.6.1.1" class="indexterm"></a>
  34. <code class="literal"><code class="function">hostmask(<code class="type">inet</code>)</code></code>
  35. </td><td><code class="type">inet</code></td><td>construct host mask for network</td><td><code class="literal">hostmask('192.168.23.20/30')</code></td><td><code class="literal">0.0.0.3</code></td></tr><tr><td>
  36. <a id="id-1.5.8.17.5.2.2.7.1.1" class="indexterm"></a>
  37. <code class="literal"><code class="function">masklen(<code class="type">inet</code>)</code></code>
  38. </td><td><code class="type">int</code></td><td>extract netmask length</td><td><code class="literal">masklen('192.168.1.5/24')</code></td><td><code class="literal">24</code></td></tr><tr><td>
  39. <a id="id-1.5.8.17.5.2.2.8.1.1" class="indexterm"></a>
  40. <code class="literal"><code class="function">netmask(<code class="type">inet</code>)</code></code>
  41. </td><td><code class="type">inet</code></td><td>construct netmask for network</td><td><code class="literal">netmask('192.168.1.5/24')</code></td><td><code class="literal">255.255.255.0</code></td></tr><tr><td>
  42. <a id="id-1.5.8.17.5.2.2.9.1.1" class="indexterm"></a>
  43. <code class="literal"><code class="function">network(<code class="type">inet</code>)</code></code>
  44. </td><td><code class="type">cidr</code></td><td>extract network part of address</td><td><code class="literal">network('192.168.1.5/24')</code></td><td><code class="literal">192.168.1.0/24</code></td></tr><tr><td>
  45. <a id="id-1.5.8.17.5.2.2.10.1.1" class="indexterm"></a>
  46. <code class="literal"><code class="function">set_masklen(<code class="type">inet</code>, <code class="type">int</code>)</code></code>
  47. </td><td><code class="type">inet</code></td><td>set netmask length for <code class="type">inet</code> value</td><td><code class="literal">set_masklen('192.168.1.5/24', 16)</code></td><td><code class="literal">192.168.1.5/16</code></td></tr><tr><td><code class="literal"><code class="function">set_masklen(<code class="type">cidr</code>, <code class="type">int</code>)</code></code></td><td><code class="type">cidr</code></td><td>set netmask length for <code class="type">cidr</code> value</td><td><code class="literal">set_masklen('192.168.1.0/24'::cidr, 16)</code></td><td><code class="literal">192.168.0.0/16</code></td></tr><tr><td>
  48. <a id="id-1.5.8.17.5.2.2.12.1.1" class="indexterm"></a>
  49. <code class="literal"><code class="function">text(<code class="type">inet</code>)</code></code>
  50. </td><td><code class="type">text</code></td><td>extract IP address and netmask length as text</td><td><code class="literal">text(inet '192.168.1.5')</code></td><td><code class="literal">192.168.1.5/32</code></td></tr><tr><td>
  51. <a id="id-1.5.8.17.5.2.2.13.1.1" class="indexterm"></a>
  52. <code class="literal"><code class="function">inet_same_family(<code class="type">inet</code>, <code class="type">inet</code>)</code></code>
  53. </td><td><code class="type">boolean</code></td><td>are the addresses from the same family?</td><td><code class="literal">inet_same_family('192.168.1.5/24', '::1')</code></td><td><code class="literal">false</code></td></tr><tr><td>
  54. <a id="id-1.5.8.17.5.2.2.14.1.1" class="indexterm"></a>
  55. <code class="literal"><code class="function">inet_merge(<code class="type">inet</code>, <code class="type">inet</code>)</code></code>
  56. </td><td><code class="type">cidr</code></td><td>the smallest network which includes both of the given networks</td><td><code class="literal">inet_merge('192.168.1.5/24', '192.168.2.5/24')</code></td><td><code class="literal">192.168.0.0/22</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
  57. Any <code class="type">cidr</code> value can be cast to <code class="type">inet</code> implicitly
  58. or explicitly; therefore, the functions shown above as operating on
  59. <code class="type">inet</code> also work on <code class="type">cidr</code> values. (Where there are
  60. separate functions for <code class="type">inet</code> and <code class="type">cidr</code>, it is because
  61. the behavior should be different for the two cases.)
  62. Also, it is permitted to cast an <code class="type">inet</code> value to <code class="type">cidr</code>.
  63. When this is done, any bits to the right of the netmask are silently zeroed
  64. to create a valid <code class="type">cidr</code> value.
  65. In addition,
  66. you can cast a text value to <code class="type">inet</code> or <code class="type">cidr</code>
  67. using normal casting syntax: for example,
  68. <code class="literal">inet(<em class="replaceable"><code>expression</code></em>)</code> or
  69. <code class="literal"><em class="replaceable"><code>colname</code></em>::cidr</code>.
  70. </p><p>
  71. <a class="xref" href="functions-net.html#MACADDR-FUNCTIONS-TABLE" title="Table 9.39. macaddr Functions">Table 9.39</a> shows the functions
  72. available for use with the <code class="type">macaddr</code> type. The function
  73. <code class="literal"><code class="function">trunc(<code class="type">macaddr</code>)</code></code> returns a MAC
  74. address with the last 3 bytes set to zero. This can be used to
  75. associate the remaining prefix with a manufacturer.
  76. </p><div class="table" id="MACADDR-FUNCTIONS-TABLE"><p class="title"><strong>Table 9.39. <code class="type">macaddr</code> Functions</strong></p><div class="table-contents"><table class="table" summary="macaddr Functions" border="1"><colgroup><col /><col /><col /><col /><col /></colgroup><thead><tr><th>Function</th><th>Return Type</th><th>Description</th><th>Example</th><th>Result</th></tr></thead><tbody><tr><td>
  77. <a id="id-1.5.8.17.8.2.2.1.1.1" class="indexterm"></a>
  78. <code class="literal"><code class="function">trunc(<code class="type">macaddr</code>)</code></code>
  79. </td><td><code class="type">macaddr</code></td><td>set last 3 bytes to zero</td><td><code class="literal">trunc(macaddr '12:34:56:78:90:ab')</code></td><td><code class="literal">12:34:56:00:00:00</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
  80. The <code class="type">macaddr</code> type also supports the standard relational
  81. operators (<code class="literal">&gt;</code>, <code class="literal">&lt;=</code>, etc.) for
  82. lexicographical ordering, and the bitwise arithmetic operators
  83. (<code class="literal">~</code>, <code class="literal">&amp;</code> and <code class="literal">|</code>)
  84. for NOT, AND and OR.
  85. </p><p>
  86. <a class="xref" href="functions-net.html#MACADDR8-FUNCTIONS-TABLE" title="Table 9.40. macaddr8 Functions">Table 9.40</a> shows the functions
  87. available for use with the <code class="type">macaddr8</code> type. The function
  88. <code class="literal"><code class="function">trunc(<code class="type">macaddr8</code>)</code></code> returns a MAC
  89. address with the last 5 bytes set to zero. This can be used to
  90. associate the remaining prefix with a manufacturer.
  91. </p><div class="table" id="MACADDR8-FUNCTIONS-TABLE"><p class="title"><strong>Table 9.40. <code class="type">macaddr8</code> Functions</strong></p><div class="table-contents"><table class="table" summary="macaddr8 Functions" border="1"><colgroup><col /><col /><col /><col /><col /></colgroup><thead><tr><th>Function</th><th>Return Type</th><th>Description</th><th>Example</th><th>Result</th></tr></thead><tbody><tr><td>
  92. <a id="id-1.5.8.17.11.2.2.1.1.1" class="indexterm"></a>
  93. <code class="literal"><code class="function">trunc(<code class="type">macaddr8</code>)</code></code>
  94. </td><td><code class="type">macaddr8</code></td><td>set last 5 bytes to zero</td><td><code class="literal">trunc(macaddr8 '12:34:56:78:90:ab:cd:ef')</code></td><td><code class="literal">12:34:56:00:00:00:00:00</code></td></tr><tr><td>
  95. <a id="id-1.5.8.17.11.2.2.2.1.1" class="indexterm"></a>
  96. <code class="literal"><code class="function">macaddr8_set7bit(<code class="type">macaddr8</code>)</code></code>
  97. </td><td><code class="type">macaddr8</code></td><td>set 7th bit to one, also known as modified EUI-64, for inclusion in an IPv6 address</td><td><code class="literal">macaddr8_set7bit(macaddr8 '00:34:56:ab:cd:ef')</code></td><td><code class="literal">02:34:56:ff:fe:ab:cd:ef</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
  98. The <code class="type">macaddr8</code> type also supports the standard relational
  99. operators (<code class="literal">&gt;</code>, <code class="literal">&lt;=</code>, etc.) for
  100. ordering, and the bitwise arithmetic operators (<code class="literal">~</code>,
  101. <code class="literal">&amp;</code> and <code class="literal">|</code>) for NOT, AND and OR.
  102. </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="functions-geometry.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="functions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="functions-textsearch.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">9.11. Geometric Functions and Operators </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 9.13. Text Search Functions and Operators</td></tr></table></div></body></html>
上海开阖软件有限公司 沪ICP备12045867号-1