gooderp18绿色标准版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

148 lines
16KB

  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.5. Binary String 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-string.html" title="9.4. String Functions and Operators" /><link rel="next" href="functions-bitstring.html" title="9.6. Bit String 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.5. Binary String Functions and Operators</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="functions-string.html" title="9.4. String 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-bitstring.html" title="9.6. Bit String Functions and Operators">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="FUNCTIONS-BINARYSTRING"><div class="titlepage"><div><div><h2 class="title" style="clear: both">9.5. Binary String Functions and Operators</h2></div></div></div><a id="id-1.5.8.10.2" class="indexterm"></a><p>
  3. This section describes functions and operators for examining and
  4. manipulating values of type <code class="type">bytea</code>.
  5. </p><p>
  6. <acronym class="acronym">SQL</acronym> defines some string functions that use
  7. key words, rather than commas, to separate
  8. arguments. Details are in
  9. <a class="xref" href="functions-binarystring.html#FUNCTIONS-BINARYSTRING-SQL" title="Table 9.12. SQL Binary String Functions and Operators">Table 9.12</a>.
  10. <span class="productname">PostgreSQL</span> also provides versions of these functions
  11. that use the regular function invocation syntax
  12. (see <a class="xref" href="functions-binarystring.html#FUNCTIONS-BINARYSTRING-OTHER" title="Table 9.13. Other Binary String Functions">Table 9.13</a>).
  13. </p><div class="note"><h3 class="title">Note</h3><p>
  14. The sample results shown on this page assume that the server parameter
  15. <a class="link" href="runtime-config-client.html#GUC-BYTEA-OUTPUT"><code class="varname">bytea_output</code></a> is set
  16. to <code class="literal">escape</code> (the traditional PostgreSQL format).
  17. </p></div><div class="table" id="FUNCTIONS-BINARYSTRING-SQL"><p class="title"><strong>Table 9.12. <acronym class="acronym">SQL</acronym> Binary String Functions and Operators</strong></p><div class="table-contents"><table class="table" summary="SQL Binary String Functions and Operators" 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><code class="literal"><em class="parameter"><code>string</code></em> <code class="literal">||</code>
  18. <em class="parameter"><code>string</code></em></code></td><td> <code class="type">bytea</code> </td><td>
  19. String concatenation
  20. <a id="id-1.5.8.10.6.2.2.1.3.1" class="indexterm"></a>
  21. </td><td><code class="literal">'\\Post'::bytea || '\047gres\000'::bytea</code></td><td><code class="literal">\\Post'gres\000</code></td></tr><tr><td>
  22. <a id="id-1.5.8.10.6.2.2.2.1.1" class="indexterm"></a>
  23. <code class="literal"><code class="function">octet_length(<em class="parameter"><code>string</code></em>)</code></code>
  24. </td><td><code class="type">int</code></td><td>Number of bytes in binary string</td><td><code class="literal">octet_length('jo\000se'::bytea)</code></td><td><code class="literal">5</code></td></tr><tr><td>
  25. <a id="id-1.5.8.10.6.2.2.3.1.1" class="indexterm"></a>
  26. <code class="literal"><code class="function">overlay(<em class="parameter"><code>string</code></em> placing <em class="parameter"><code>string</code></em> from <code class="type">int</code> [<span class="optional">for <code class="type">int</code></span>])</code></code>
  27. </td><td><code class="type">bytea</code></td><td>
  28. Replace substring
  29. </td><td><code class="literal">overlay('Th\000omas'::bytea placing '\002\003'::bytea from 2 for 3)</code></td><td><code class="literal">T\\002\\003mas</code></td></tr><tr><td>
  30. <a id="id-1.5.8.10.6.2.2.4.1.1" class="indexterm"></a>
  31. <code class="literal"><code class="function">position(<em class="parameter"><code>substring</code></em> in <em class="parameter"><code>string</code></em>)</code></code>
  32. </td><td><code class="type">int</code></td><td>Location of specified substring</td><td><code class="literal">position('\000om'::bytea in 'Th\000omas'::bytea)</code></td><td><code class="literal">3</code></td></tr><tr><td>
  33. <a id="id-1.5.8.10.6.2.2.5.1.1" class="indexterm"></a>
  34. <code class="literal"><code class="function">substring(<em class="parameter"><code>string</code></em> [<span class="optional">from <code class="type">int</code></span>] [<span class="optional">for <code class="type">int</code></span>])</code></code>
  35. </td><td><code class="type">bytea</code></td><td>
  36. Extract substring
  37. </td><td><code class="literal">substring('Th\000omas'::bytea from 2 for 3)</code></td><td><code class="literal">h\000o</code></td></tr><tr><td>
  38. <a id="id-1.5.8.10.6.2.2.6.1.1" class="indexterm"></a>
  39. <code class="literal"><code class="function">trim([<span class="optional">both</span>]
  40. <em class="parameter"><code>bytes</code></em> from
  41. <em class="parameter"><code>string</code></em>)</code></code>
  42. </td><td><code class="type">bytea</code></td><td>
  43. Remove the longest string containing only bytes appearing in
  44. <em class="parameter"><code>bytes</code></em> from the start
  45. and end of <em class="parameter"><code>string</code></em>
  46. </td><td><code class="literal">trim('\000\001'::bytea from '\000Tom\001'::bytea)</code></td><td><code class="literal">Tom</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
  47. Additional binary string manipulation functions are available and
  48. are listed in <a class="xref" href="functions-binarystring.html#FUNCTIONS-BINARYSTRING-OTHER" title="Table 9.13. Other Binary String Functions">Table 9.13</a>. Some
  49. of them are used internally to implement the
  50. <acronym class="acronym">SQL</acronym>-standard string functions listed in <a class="xref" href="functions-binarystring.html#FUNCTIONS-BINARYSTRING-SQL" title="Table 9.12. SQL Binary String Functions and Operators">Table 9.12</a>.
  51. </p><div class="table" id="FUNCTIONS-BINARYSTRING-OTHER"><p class="title"><strong>Table 9.13. Other Binary String Functions</strong></p><div class="table-contents"><table class="table" summary="Other Binary String 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>
  52. <a id="id-1.5.8.10.8.2.2.1.1.1" class="indexterm"></a>
  53. <code class="literal"><code class="function">btrim(<em class="parameter"><code>string</code></em>
  54. <code class="type">bytea</code>, <em class="parameter"><code>bytes</code></em> <code class="type">bytea</code>)</code></code>
  55. </td><td><code class="type">bytea</code></td><td>
  56. Remove the longest string containing only bytes appearing in
  57. <em class="parameter"><code>bytes</code></em> from the start and end of
  58. <em class="parameter"><code>string</code></em>
  59. </td><td><code class="literal">btrim('\000trim\001'::bytea, '\000\001'::bytea)</code></td><td><code class="literal">trim</code></td></tr><tr><td>
  60. <a id="id-1.5.8.10.8.2.2.2.1.1" class="indexterm"></a>
  61. <code class="literal"><code class="function">decode(<em class="parameter"><code>string</code></em> <code class="type">text</code>,
  62. <em class="parameter"><code>format</code></em> <code class="type">text</code>)</code></code>
  63. </td><td><code class="type">bytea</code></td><td>
  64. Decode binary data from textual representation in <em class="parameter"><code>string</code></em>.
  65. Options for <em class="parameter"><code>format</code></em> are same as in <code class="function">encode</code>.
  66. </td><td><code class="literal">decode('123\000456', 'escape')</code></td><td><code class="literal">123\000456</code></td></tr><tr><td>
  67. <a id="id-1.5.8.10.8.2.2.3.1.1" class="indexterm"></a>
  68. <code class="literal"><code class="function">encode(<em class="parameter"><code>data</code></em> <code class="type">bytea</code>,
  69. <em class="parameter"><code>format</code></em> <code class="type">text</code>)</code></code>
  70. </td><td><code class="type">text</code></td><td>
  71. Encode binary data into a textual representation. Supported
  72. formats are: <code class="literal">base64</code>, <code class="literal">hex</code>, <code class="literal">escape</code>.
  73. <code class="literal">escape</code> converts zero bytes and high-bit-set bytes to
  74. octal sequences (<code class="literal">\</code><em class="replaceable"><code>nnn</code></em>) and
  75. doubles backslashes.
  76. </td><td><code class="literal">encode('123\000456'::bytea, 'escape')</code></td><td><code class="literal">123\000456</code></td></tr><tr><td>
  77. <a id="id-1.5.8.10.8.2.2.4.1.1" class="indexterm"></a>
  78. <code class="literal"><code class="function">get_bit(<em class="parameter"><code>string</code></em>, <em class="parameter"><code>offset</code></em>)</code></code>
  79. </td><td><code class="type">int</code></td><td>
  80. Extract bit from string
  81. </td><td><code class="literal">get_bit('Th\000omas'::bytea, 45)</code></td><td><code class="literal">1</code></td></tr><tr><td>
  82. <a id="id-1.5.8.10.8.2.2.5.1.1" class="indexterm"></a>
  83. <code class="literal"><code class="function">get_byte(<em class="parameter"><code>string</code></em>, <em class="parameter"><code>offset</code></em>)</code></code>
  84. </td><td><code class="type">int</code></td><td>
  85. Extract byte from string
  86. </td><td><code class="literal">get_byte('Th\000omas'::bytea, 4)</code></td><td><code class="literal">109</code></td></tr><tr><td>
  87. <a id="id-1.5.8.10.8.2.2.6.1.1" class="indexterm"></a>
  88. <code class="literal"><code class="function">length(<em class="parameter"><code>string</code></em>)</code></code>
  89. </td><td><code class="type">int</code></td><td>
  90. Length of binary string
  91. <a id="id-1.5.8.10.8.2.2.6.3.1" class="indexterm"></a>
  92. <a id="id-1.5.8.10.8.2.2.6.3.2" class="indexterm"></a>
  93. </td><td><code class="literal">length('jo\000se'::bytea)</code></td><td><code class="literal">5</code></td></tr><tr><td>
  94. <a id="id-1.5.8.10.8.2.2.7.1.1" class="indexterm"></a>
  95. <code class="literal"><code class="function">md5(<em class="parameter"><code>string</code></em>)</code></code>
  96. </td><td><code class="type">text</code></td><td>
  97. Calculates the MD5 hash of <em class="parameter"><code>string</code></em>,
  98. returning the result in hexadecimal
  99. </td><td><code class="literal">md5('Th\000omas'::bytea)</code></td><td><code class="literal">8ab2d3c9689aaf18​b4958c334c82d8b1</code></td></tr><tr><td>
  100. <a id="id-1.5.8.10.8.2.2.8.1.1" class="indexterm"></a>
  101. <code class="literal"><code class="function">set_bit(<em class="parameter"><code>string</code></em>,
  102. <em class="parameter"><code>offset</code></em>, <em class="parameter"><code>newvalue</code></em>)</code></code>
  103. </td><td><code class="type">bytea</code></td><td>
  104. Set bit in string
  105. </td><td><code class="literal">set_bit('Th\000omas'::bytea, 45, 0)</code></td><td><code class="literal">Th\000omAs</code></td></tr><tr><td>
  106. <a id="id-1.5.8.10.8.2.2.9.1.1" class="indexterm"></a>
  107. <code class="literal"><code class="function">set_byte(<em class="parameter"><code>string</code></em>,
  108. <em class="parameter"><code>offset</code></em>, <em class="parameter"><code>newvalue</code></em>)</code></code>
  109. </td><td><code class="type">bytea</code></td><td>
  110. Set byte in string
  111. </td><td><code class="literal">set_byte('Th\000omas'::bytea, 4, 64)</code></td><td><code class="literal">Th\000o@as</code></td></tr><tr><td>
  112. <a id="id-1.5.8.10.8.2.2.10.1.1" class="indexterm"></a>
  113. <code class="literal"><code class="function">sha224(<code class="type">bytea</code>)</code></code>
  114. </td><td><code class="type">bytea</code></td><td>
  115. SHA-224 hash
  116. </td><td><code class="literal">sha224('abc')</code></td><td><code class="literal">\x23097d223405d8228642a477bda2​55b32aadbce4bda0b3f7e36c9da7</code></td></tr><tr><td>
  117. <a id="id-1.5.8.10.8.2.2.11.1.1" class="indexterm"></a>
  118. <code class="literal"><code class="function">sha256(<code class="type">bytea</code>)</code></code>
  119. </td><td><code class="type">bytea</code></td><td>
  120. SHA-256 hash
  121. </td><td><code class="literal">sha256('abc')</code></td><td><code class="literal">\xba7816bf8f01cfea414140de5dae2223​b00361a396177a9cb410ff61f20015ad</code></td></tr><tr><td>
  122. <a id="id-1.5.8.10.8.2.2.12.1.1" class="indexterm"></a>
  123. <code class="literal"><code class="function">sha384(<code class="type">bytea</code>)</code></code>
  124. </td><td><code class="type">bytea</code></td><td>
  125. SHA-384 hash
  126. </td><td><code class="literal">sha384('abc')</code></td><td><code class="literal">\xcb00753f45a35e8bb5a03d699ac65007​272c32ab0eded1631a8b605a43ff5bed​8086072ba1e7cc2358baeca134c825a7</code></td></tr><tr><td>
  127. <a id="id-1.5.8.10.8.2.2.13.1.1" class="indexterm"></a>
  128. <code class="literal"><code class="function">sha512(<code class="type">bytea</code>)</code></code>
  129. </td><td><code class="type">bytea</code></td><td>
  130. SHA-512 hash
  131. </td><td><code class="literal">sha512('abc')</code></td><td><code class="literal">\xddaf35a193617abacc417349ae204131​12e6fa4e89a97ea20a9eeee64b55d39a​2192992a274fc1a836ba3c23a3feebbd​454d4423643ce80e2a9ac94fa54ca49f</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
  132. <code class="function">get_byte</code> and <code class="function">set_byte</code> number the first byte
  133. of a binary string as byte 0.
  134. <code class="function">get_bit</code> and <code class="function">set_bit</code> number bits from the
  135. right within each byte; for example bit 0 is the least significant bit of
  136. the first byte, and bit 15 is the most significant bit of the second byte.
  137. </p><p>
  138. Note that for historic reasons, the function <code class="function">md5</code>
  139. returns a hex-encoded value of type <code class="type">text</code> whereas the SHA-2
  140. functions return type <code class="type">bytea</code>. Use the functions
  141. <code class="function">encode</code> and <code class="function">decode</code> to convert
  142. between the two, for example <code class="literal">encode(sha256('abc'),
  143. 'hex')</code> to get a hex-encoded text representation.
  144. </p><p>
  145. See also the aggregate function <code class="function">string_agg</code> in
  146. <a class="xref" href="functions-aggregate.html" title="9.20. Aggregate Functions">Section 9.20</a> and the large object functions
  147. in <a class="xref" href="lo-funcs.html" title="34.4. Server-Side Functions">Section 34.4</a>.
  148. </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="functions-string.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-bitstring.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">9.4. String 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.6. Bit String Functions and Operators</td></tr></table></div></body></html>
上海开阖软件有限公司 沪ICP备12045867号-1