doc-exports/docs/dws/dev/dws_06_0368.html
Lu, Huayi e6fa411af0 DWS DEV 830.201 version
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>
2024-05-16 07:24:04 +00:00

240 lines
29 KiB
HTML

<a name="EN-US_TOPIC_0000001670210209"></a><a name="EN-US_TOPIC_0000001670210209"></a>
<h1 class="topictitle1">Array</h1>
<div id="body0000001670210209"><p id="EN-US_TOPIC_0000001670210209__p16902313123318">An array is a set of data. The array type allows a single database field to have multiple values. It is usually used to store and process data with similar attributes.</p>
<div class="section" id="EN-US_TOPIC_0000001670210209__section16880332105918"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen126921247117"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="nb">ARRAY</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">param</span><span class="w"> </span><span class="p">]</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001670210209__p39097450012">or</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen2574171316117"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="s1">'{ param }'</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001670210209__p22995421323">The <strong id="EN-US_TOPIC_0000001670210209__b94651320555">param</strong> parameter is described as follows:</p>
<ul id="EN-US_TOPIC_0000001670210209__ul428111417116"><li id="EN-US_TOPIC_0000001670210209__li152813415113">param: value contained in the array. It can be zero or many. Multiple values are separated by commas (,). If there is no value, set this parameter to NULL.</li><li id="EN-US_TOPIC_0000001670210209__li132815411618">When you specify an array constant in '{ <em id="EN-US_TOPIC_0000001670210209__i176212419582">param </em>}' format, the elements of the string type cannot start or end with a single quotation mark. Instead, a double quotation mark is needed. Two consecutive single quotation marks will be converted to one single quotation mark.</li><li id="EN-US_TOPIC_0000001670210209__li8281164110112">The data type of the first element is used as the data type of the array. All elements in an array must be of the same type, or their types can be converted to each other.</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001670210209__section922924113379"><h4 class="sectiontitle">Definition of the Array Type</h4><p id="EN-US_TOPIC_0000001670210209__p220194319373">An array type is defined by adding values in the square brackets ([]) at the end of a data type.</p>
<p id="EN-US_TOPIC_0000001670210209__p7193449134413">Create the <strong id="EN-US_TOPIC_0000001670210209__b195319554318">books</strong> table. The type of the <strong id="EN-US_TOPIC_0000001670210209__b2945101212598">price</strong> column (book prices) is a one-dimensional integer array, and the type of the <strong id="EN-US_TOPIC_0000001670210209__b192501987148">tags</strong> column (book tags) is a two-dimensional text array.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen11074615013"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">books</span><span class="w"> </span><span class="p">(</span><span class="n">id</span><span class="w"> </span><span class="nb">SERIAL</span><span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="p">,</span><span class="w"> </span><span class="n">title</span><span class="w"> </span><span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span><span class="w"> </span><span class="n">price_by_quarter</span><span class="w"> </span><span class="nb">int</span><span class="p">[],</span><span class="w"> </span><span class="n">tags</span><span class="w"> </span><span class="nb">TEXT</span><span class="p">[][]);</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001670210209__p8167116151812">The <strong id="EN-US_TOPIC_0000001670210209__b12442103615313">CREATE TABLE</strong> syntax can specify the array size. For example:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen205313812507"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">test</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">[</span><span class="mi">3</span><span class="p">]);</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001670210209__p82429212386">In current database implementation, the array size limits of statements is ignored. Statements with array size limits behave the same as those without. At the same time, the number of declared dimensions is not required. Arrays of a particular element type are all treated as the same type. Their size or number of dimensions are ignored.</p>
<p id="EN-US_TOPIC_0000001670210209__p358612015320">You can also use the keyword <strong id="EN-US_TOPIC_0000001670210209__b183198441912">ARRAY</strong> to define a one-dimensional array. The <strong id="EN-US_TOPIC_0000001670210209__b457715219202">price</strong> column in the <strong id="EN-US_TOPIC_0000001670210209__b577875502016">books</strong> table is defined using <strong id="EN-US_TOPIC_0000001670210209__b1463410619211">ARRAY</strong> and the array size is specified as follows:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen2773111275414"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">price_by_quarter</span><span class="w"> </span><span class="nb">int</span><span class="w"> </span><span class="nb">ARRAY</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001670210209__p1173117311864">Use <strong id="EN-US_TOPIC_0000001670210209__b1746715711217">ARRAY</strong> without specifying the array size:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen1296332220717"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">price_by_quarter</span><span class="w"> </span><span class="nb">int</span><span class="w"> </span><span class="nb">ARRAY</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001670210209__section95035499439"><h4 class="sectiontitle">Array Value Input</h4><p id="EN-US_TOPIC_0000001670210209__p020717512438">When entering an array value, write each array value as a literal constant, surround element values with braces, and separate them with commas. The general format of an array constant is as follows:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen12151548104512"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="s1">'{ val1 delim val2 delim ... }'</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001670210209__p1887155711455"><strong id="EN-US_TOPIC_0000001670210209__b1290204072414">delim</strong> indicates a delimiter, and each <strong id="EN-US_TOPIC_0000001670210209__b4659123510255">val</strong> may be a constant or a subarray of an array element type.</p>
<p id="EN-US_TOPIC_0000001670210209__p1042620445487">An example of an array constant is as follows:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen154271344204810"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="s1">'{{1,2,3},{4,5,6},{7,8,9}}'</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001670210209__p1442724424816">The constant is a two-dimensional, 3-by-3 array consisting of three integer subarrays.</p>
<p id="EN-US_TOPIC_0000001670210209__p1384617512481">Insert data into the <strong id="EN-US_TOPIC_0000001670210209__b10132172722610">books</strong> table and query the <strong id="EN-US_TOPIC_0000001670210209__b13707132919261">books</strong> table.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen498816266273"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">books</span><span class="w"> </span>
<span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'One Hundred years of Solitude'</span><span class="p">,</span><span class="s1">'{25,25,25,25}'</span><span class="p">,</span><span class="s1">'{{&quot;fiction&quot;}, {&quot;adventure&quot;}}'</span><span class="p">),</span>
<span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'Robinson Crusoe'</span><span class="p">,</span><span class="w"> </span><span class="s1">'{30,32,32,32}'</span><span class="p">,</span><span class="w"> </span><span class="s1">'{{&quot;adventure&quot;}, {&quot;fiction&quot;}}'</span><span class="p">),</span>
<span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="s1">'Gone with the Wind'</span><span class="p">,</span><span class="w"> </span><span class="s1">'{27,27,29,28}'</span><span class="p">,</span><span class="w"> </span><span class="s1">'{{&quot;romance&quot;}, {&quot;fantasy&quot;}}'</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">books</span><span class="p">;</span>
<span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">title</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">price_by_quarter</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">tags</span>
<span class="c1">----+-------------------------------+------------------+-------------------------</span>
<span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">One</span><span class="w"> </span><span class="n">Hundred</span><span class="w"> </span><span class="n">years</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">Solitude</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="mi">25</span><span class="p">,</span><span class="mi">25</span><span class="p">,</span><span class="mi">25</span><span class="p">,</span><span class="mi">25</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{{</span><span class="n">fiction</span><span class="err">}</span><span class="p">,</span><span class="err">{</span><span class="n">adventure</span><span class="err">}}</span>
<span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Robinson</span><span class="w"> </span><span class="n">Crusoe</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="mi">30</span><span class="p">,</span><span class="mi">32</span><span class="p">,</span><span class="mi">32</span><span class="p">,</span><span class="mi">32</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{{</span><span class="n">adventure</span><span class="err">}</span><span class="p">,</span><span class="err">{</span><span class="n">fiction</span><span class="err">}}</span>
<span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Gone</span><span class="w"> </span><span class="k">with</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">Wind</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="mi">27</span><span class="p">,</span><span class="mi">27</span><span class="p">,</span><span class="mi">29</span><span class="p">,</span><span class="mi">28</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{{</span><span class="n">romance</span><span class="err">}</span><span class="p">,</span><span class="err">{</span><span class="n">fantasy</span><span class="err">}}</span>
<span class="p">(</span><span class="mi">3</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span>
</pre></div></td></tr></table></div>
</div>
<div class="caution" id="EN-US_TOPIC_0000001670210209__note679015813293"><span class="cautiontitle"><img src="public_sys-resources/caution_3.0-en-us.png"> </span><div class="cautionbody"><p id="EN-US_TOPIC_0000001670210209__p1979012820296">When multi-dimensional array data is inserted, each dimension of the array must have a matching length.</p>
</div></div>
<p id="EN-US_TOPIC_0000001670210209__p10154124715296">Use the <strong id="EN-US_TOPIC_0000001670210209__b1357612092720">ARRAY</strong> keyword to insert data.</p>
<pre class="screen" id="EN-US_TOPIC_0000001670210209__screen1849714305301">INSERT INTO books
VALUES (1, 'One Hundred years of Solitude',ARRAY[25,25,25,25],ARRAY['fiction', 'adventure']),
(2, 'Robinson Crusoe', ARRAY[30,32,32,32], ARRAY['adventure', 'fiction']),
(3, 'Gone with the Wind', ARRAY[27,27,29,28], ARRAY['romance', 'fantasy']);</pre>
</div>
<div class="section" id="EN-US_TOPIC_0000001670210209__section321417368313"><h4 class="sectiontitle">Accessing Arrays</h4><p id="EN-US_TOPIC_0000001670210209__p15322519184"><strong id="EN-US_TOPIC_0000001670210209__b690510411581">Accessing Array Elements</strong></p>
<p id="EN-US_TOPIC_0000001670210209__p76677431686">Query the names of the books whose prices change in the second quarter.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen20490161017559"><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">title</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">books</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">price_by_quarter</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">&lt;&gt;</span><span class="w"> </span><span class="n">price_by_quarter</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
<span class="w"> </span><span class="n">title</span>
<span class="c1">-----------------</span>
<span class="w"> </span><span class="n">Robinson</span><span class="w"> </span><span class="n">Crusoe</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>
<p id="EN-US_TOPIC_0000001670210209__p10831182319917">Search for the prices of all books in the third quarter:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen69883612910"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">price_by_quarter</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">books</span><span class="p">;</span>
<span class="w"> </span><span class="n">price_by_quarter</span>
<span class="c1">------------------</span>
<span class="w"> </span><span class="mi">29</span>
<span class="w"> </span><span class="mi">25</span>
<span class="w"> </span><span class="mi">32</span>
<span class="p">(</span><span class="mi">3</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001670210209__p99206331296"><strong id="EN-US_TOPIC_0000001670210209__b174819441919">Accessing Array Slices</strong></p>
<p id="EN-US_TOPIC_0000001670210209__p9813847161017">Any rectangular slice or subarray of an array can be accessed. An array slice can be defined by specifying [lower bound: upper bound] on one or more array dimensions.</p>
<p id="EN-US_TOPIC_0000001670210209__p17706817779">Query the second label of <strong id="EN-US_TOPIC_0000001670210209__b10155425292">Gone with the Wind</strong>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen10357110131611"><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">tags</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">books</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'Gone with the Wind'</span><span class="p">;</span>
<span class="w"> </span><span class="n">tags</span>
<span class="c1">-----------</span>
<span class="w"> </span><span class="err">{</span><span class="n">fantasy</span><span class="err">}</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>
<p id="EN-US_TOPIC_0000001670210209__p103009481912"><strong id="EN-US_TOPIC_0000001670210209__b162741156592">Using Functions to Access Arrays</strong></p>
<p id="EN-US_TOPIC_0000001670210209__p66321020111317">Use the <strong id="EN-US_TOPIC_0000001670210209__b1228316576297">array_dims</strong> function to obtain the dimension of an array value.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen19232643111313"><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">array_dims</span><span class="p">(</span><span class="n">tags</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">books</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'Robinson Crusoe'</span><span class="p">;</span>
<span class="w"> </span><span class="n">array_dims</span>
<span class="c1">------------</span>
<span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">2</span><span class="p">]</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>
<p id="EN-US_TOPIC_0000001670210209__p1718472120137">You can also use <strong id="EN-US_TOPIC_0000001670210209__b9573539153011">array_upper</strong> and <strong id="EN-US_TOPIC_0000001670210209__b1063764418306">array_lower</strong> to obtain the array dimension. They return the upper and lower bounds of a specified array, respectively.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen14161117151610"><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">array_upper</span><span class="p">(</span><span class="n">tags</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">books</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'Robinson Crusoe'</span><span class="p">;</span>
<span class="w"> </span><span class="n">array_upper</span>
<span class="c1">-------------</span>
<span class="w"> </span><span class="mi">2</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>
<p id="EN-US_TOPIC_0000001670210209__p14554621121319">The <strong id="EN-US_TOPIC_0000001670210209__b14439203143113">array_length</strong> function returns the length of a specified array dimension.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001670210209__screen4147151171611"><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">array_length</span><span class="p">(</span><span class="n">tags</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">books</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'Robinson Crusoe'</span><span class="p">;</span>
<span class="w"> </span><span class="n">array_length</span>
<span class="c1">--------------</span>
<span class="w"> </span><span class="mi">2</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_0000001670210209__section1072294613213"><h4 class="sectiontitle">Modifying an Array</h4><p id="EN-US_TOPIC_0000001670210209__p1817111293"><strong id="EN-US_TOPIC_0000001670210209__b6740220132915">Updating an Array</strong></p>
<p id="EN-US_TOPIC_0000001670210209__p1963944734716">Update the entire array data:</p>
<pre class="screen" id="EN-US_TOPIC_0000001670210209__screen163917471473">UPDATE books SET price_by_quarter = '{30,30,30,30}'
WHERE title = 'Robinson Crusoe';</pre>
<p id="EN-US_TOPIC_0000001670210209__p563954715477">Use the ARRAY expression to update the entire array data:</p>
<pre class="screen" id="EN-US_TOPIC_0000001670210209__screen18639154711473">UPDATE books SET price_by_quarter = ARRAY[30,30,30,30]
WHERE title = 'Robinson Crusoe';</pre>
<p id="EN-US_TOPIC_0000001670210209__p76391247194717">Update an element in the array:</p>
<pre class="screen" id="EN-US_TOPIC_0000001670210209__screen963924717476">UPDATE books SET price_by_quarter[4] = 35
WHERE title = 'Robinson Crusoe';</pre>
<p id="EN-US_TOPIC_0000001670210209__p1963944710472">Update a slice element in the array:</p>
<pre class="screen" id="EN-US_TOPIC_0000001670210209__screen156401847154719">UPDATE books SET price_by_quarter[1:2] = '{27,27}'
WHERE title = 'Robinson Crusoe';</pre>
<p id="EN-US_TOPIC_0000001670210209__p16801224101817">A stored array value can be expanded by assigning a value to a new element. Positions between an existing element and the new element is filled with null values. For example, if the array <strong id="EN-US_TOPIC_0000001670210209__b7977636164018">myarray</strong> currently has four elements, it will have six elements after a value is assigned to <strong id="EN-US_TOPIC_0000001670210209__b1679318533405">myarray[6]</strong> using <strong id="EN-US_TOPIC_0000001670210209__b175681757194015">UPDATE</strong>. <strong id="EN-US_TOPIC_0000001670210209__b11670201844216">myarray[5]</strong> is filled with null. Currently, this method can be used only on one-dimensional arrays.</p>
<p id="EN-US_TOPIC_0000001670210209__p16143427112911"><strong id="EN-US_TOPIC_0000001670210209__b24268362295">Building a New Array</strong></p>
<p id="EN-US_TOPIC_0000001670210209__p13100124202614">New arrays can also be constructed using the concatenation operator ||. The concatenation operator allows a single element to be added to the beginning or end of a one-dimensional array. It can also accept two <em id="EN-US_TOPIC_0000001670210209__i19338124712291">N</em> dimensional arrays, or an N dimensional array and an N+1 dimensional array.</p>
<pre class="screen" id="EN-US_TOPIC_0000001670210209__screen1549011913018">SELECT ARRAY[1,2] || ARRAY[3,4];
?column?
-----------
{1,2,3,4}
(1 row)
SELECT ARRAY[5,6] || ARRAY[[1,2],[3,4]];
?column?
---------------------
{{5,6},{1,2},{3,4}}
(1 row) </pre>
<p id="EN-US_TOPIC_0000001670210209__p1132410495311">Use the <strong id="EN-US_TOPIC_0000001670210209__b441041819441">array_prepend</strong>, <strong id="EN-US_TOPIC_0000001670210209__b3641721204419">array_append</strong>, or <strong id="EN-US_TOPIC_0000001670210209__b1813812255446">array_cat function</strong> to build an array.</p>
<pre class="screen" id="EN-US_TOPIC_0000001670210209__screen18253164153212">SELECT array_prepend(1, ARRAY[2,3]);
array_prepend
---------------
{1,2,3}
(1 row)
SELECT array_append(ARRAY[1,2], 3);
array_append
--------------
{1,2,3}
(1 row)
SELECT array_cat(ARRAY[1,2], ARRAY[3,4]);
array_cat
-----------
{1,2,3,4}
(1 row)
SELECT array_cat(ARRAY[[1,2],[3,4]], ARRAY[5,6]);
array_cat
---------------------
{{1,2},{3,4},{5,6}}
(1 row)
SELECT array_cat(ARRAY[5,6], ARRAY[[1,2],[3,4]]);
array_cat
---------------------
{{5,6},{1,2},{3,4}}
(1 row)</pre>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0008.html">Data Types</a></div>
</div>
</div>