forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
170 lines
16 KiB
HTML
170 lines
16 KiB
HTML
<a name="EN-US_TOPIC_0000001233708663"></a><a name="EN-US_TOPIC_0000001233708663"></a>
|
|
|
|
<h1 class="topictitle1">Bit String Functions and Operators</h1>
|
|
<div id="body8662426"><p id="EN-US_TOPIC_0000001233708663__abb30203b4b5843e2bf2886163a71e48d">Aside from the usual comparison operators, the following operators can be used. Bit string operands of <strong id="EN-US_TOPIC_0000001233708663__b84235270694553">&</strong>, <strong id="EN-US_TOPIC_0000001233708663__b8423527069461">|</strong>, and <strong id="EN-US_TOPIC_0000001233708663__b8423527069466">#</strong> must be of equal length. When bit shifting, the original length of the string is preserved by zero padding (if necessary).</p>
|
|
<div class="section" id="EN-US_TOPIC_0000001233708663__section164011681141"><h4 class="sectiontitle">||</h4><p id="EN-US_TOPIC_0000001233708663__p133962814148">Description: Connects bit strings.</p>
|
|
<p id="EN-US_TOPIC_0000001233708663__p19396138181418">For example:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708663__screen23961287143"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">B</span><span class="s1">'10001'</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">B</span><span class="s1">'011'</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">RESULT</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">result</span>
|
|
<span class="c1">----------</span>
|
|
<span class="w"> </span><span class="mi">10001011</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233708663__section1214382721714"><h4 class="sectiontitle">&</h4><p id="EN-US_TOPIC_0000001233708663__p1613911271177">Description: AND operation between bit strings</p>
|
|
<p id="EN-US_TOPIC_0000001233708663__p1513982731717">For example:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708663__screen313952715177"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">B</span><span class="s1">'10001'</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">B</span><span class="s1">'01101'</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">RESULT</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span>
|
|
<span class="c1">--------</span>
|
|
<span class="w"> </span><span class="mi">00001</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233708663__section108344871714"><h4 class="sectiontitle">|</h4><p id="EN-US_TOPIC_0000001233708663__p12792489179">Description: OR operation between bit strings</p>
|
|
<p id="EN-US_TOPIC_0000001233708663__p7794480171">For example:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708663__screen1379174861717"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">B</span><span class="s1">'10001'</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">B</span><span class="s1">'01101'</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">RESULT</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span>
|
|
<span class="c1">--------</span>
|
|
<span class="w"> </span><span class="mi">11101</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233708663__section4643184681818"><h4 class="sectiontitle">#</h4><p id="EN-US_TOPIC_0000001233708663__p1464054619186">Description: OR operation between bit strings if they are inconsistent. If the same positions in the two bit strings are both 1 or 0, the position returns <strong id="EN-US_TOPIC_0000001233708663__b842352706102316">0</strong>.</p>
|
|
<p id="EN-US_TOPIC_0000001233708663__p664019463181">For example:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708663__screen76411046181817"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">B</span><span class="s1">'10001'</span><span class="w"> </span><span class="o">#</span><span class="w"> </span><span class="n">B</span><span class="s1">'01101'</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">RESULT</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span>
|
|
<span class="c1">--------</span>
|
|
<span class="w"> </span><span class="mi">11100</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233708663__section66243018190"><h4 class="sectiontitle">~</h4><p id="EN-US_TOPIC_0000001233708663__p862319091910">Description: NOT operation between bit strings</p>
|
|
<p id="EN-US_TOPIC_0000001233708663__p1662370141918">For example:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708663__screen66234081915"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">~</span><span class="n">B</span><span class="s1">'10001'</span><span class="k">AS</span><span class="w"> </span><span class="k">RESULT</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span>
|
|
<span class="c1">----------</span>
|
|
<span class="w"> </span><span class="mi">01110</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233708663__section576920101193"><h4 class="sectiontitle"><<</h4><p id="EN-US_TOPIC_0000001233708663__p18768210181915">Description: binary left shift</p>
|
|
<div class="p" id="EN-US_TOPIC_0000001233708663__p167681310131911">For example:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708663__screen3768191017196"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">B</span><span class="s1">'10001'</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">RESULT</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span>
|
|
<span class="c1">----------</span>
|
|
<span class="w"> </span><span class="mi">01000</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233708663__section6729527181910"><h4 class="sectiontitle">>></h4><p id="EN-US_TOPIC_0000001233708663__p072816272197">Description: binary right shift</p>
|
|
<p id="EN-US_TOPIC_0000001233708663__p11728102715198">For example:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708663__screen272912711911"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">B</span><span class="s1">'10001'</span><span class="w"> </span><span class="o">>></span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">RESULT</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span>
|
|
<span class="c1">----------</span>
|
|
<span class="w"> </span><span class="mi">00100</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233708663__a3cbccd3b97b243748f953486a8628c4f">The following SQL-standard functions work on bit strings as well as character strings: <strong id="EN-US_TOPIC_0000001233708663__b69180518593555">length</strong>, <strong id="EN-US_TOPIC_0000001233708663__b33707532093555">bit_length</strong>, <strong id="EN-US_TOPIC_0000001233708663__b200949772493555">octet_length</strong>, <strong id="EN-US_TOPIC_0000001233708663__b64021556793555">position</strong>, <strong id="EN-US_TOPIC_0000001233708663__b186628271993555">substring</strong>, and <strong id="EN-US_TOPIC_0000001233708663__b109729071693555">overlay</strong>.</p>
|
|
<p id="EN-US_TOPIC_0000001233708663__a372b1f5648454a879f9600e552c82b86">The following functions work on bit strings as well as binary strings: <strong id="EN-US_TOPIC_0000001233708663__b30597481793555">get_bit</strong> and <strong id="EN-US_TOPIC_0000001233708663__b52365345293555">set_bit</strong>. When working with a bit string, these functions number the first (leftmost) bit of the string as bit 0.</p>
|
|
<div class="p" id="EN-US_TOPIC_0000001233708663__acd47f86d662e4eb7be72bd96e2af6ac0">Integers and bits can be mutually converted. For example:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708663__s3be77fcfd73b46759078270f6a62801e"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span>
|
|
<span class="normal">14</span>
|
|
<span class="normal">15</span>
|
|
<span class="normal">16</span>
|
|
<span class="normal">17</span>
|
|
<span class="normal">18</span>
|
|
<span class="normal">19</span>
|
|
<span class="normal">20</span>
|
|
<span class="normal">21</span>
|
|
<span class="normal">22</span>
|
|
<span class="normal">23</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="mi">44</span><span class="p">::</span><span class="nb">bit</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">RESULT</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">result</span>
|
|
<span class="c1">------------</span>
|
|
<span class="w"> </span><span class="mi">0000101100</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
|
|
<span class="k">SELECT</span><span class="w"> </span><span class="mi">44</span><span class="p">::</span><span class="nb">bit</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">RESULT</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span>
|
|
<span class="c1">--------</span>
|
|
<span class="w"> </span><span class="mi">100</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
|
|
<span class="k">SELECT</span><span class="w"> </span><span class="k">cast</span><span class="p">(</span><span class="o">-</span><span class="mi">44</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nb">bit</span><span class="p">(</span><span class="mi">12</span><span class="p">))</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">RESULT</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span>
|
|
<span class="c1">--------------</span>
|
|
<span class="w"> </span><span class="mi">111111010100</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
|
|
<span class="k">SELECT</span><span class="w"> </span><span class="s1">'1110'</span><span class="p">::</span><span class="nb">bit</span><span class="p">(</span><span class="mi">4</span><span class="p">)::</span><span class="nb">integer</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">RESULT</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span>
|
|
<span class="c1">--------</span>
|
|
<span class="w"> </span><span class="mi">14</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="note" id="EN-US_TOPIC_0000001233708663__ndff5fc94a3334917a7ad9ba0438273b6"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001233708663__a50c65885a887408ca1e3eec4b65d1bba">Casting to just "bit" means casting to bit(1), and so will deliver only the least significant bit of the integer.</p>
|
|
</div></div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0027.html">Functions and Operators</a></div>
|
|
</div>
|
|
</div>
|
|
|