linkend="sql-syntax-array-constructors">.
-
||.
SELECT ARRAY[1,2] || ARRAY[3,4];
- ?column?
----------------
- {{1,2},{3,4}}
+ ?column?
+-----------
+ {1,2,3,4}
(1 row)
SELECT ARRAY[5,6] || ARRAY[[1,2],[3,4]];
{{5,6},{1,2},{3,4}}
(1 row)
+
The concatenation operator allows a single element to be pushed on to the
beginning or end of a one-dimensional array. It also accepts two
N>-dimensional arrays, or an N>-dimensional
- and an N+1>-dimensional array. In the former case, the two
- N>-dimension arrays become outer elements of an
- N+1>-dimensional array. In the latter, the
- N>-dimensional array is added as either the first or last
- outer element of the N+1>-dimensional array.
-
- When extending an array by concatenation, the subscripts of its existing
- elements are preserved. For example, when pushing
- onto the beginning of an array with one-based subscripts, the resulting
- array has zero-based subscripts:
+ and an N+1>-dimensional array.
+
+ When a single element is pushed on to the beginning of a one-dimensional
+ array, the result is an array with a lower bound subscript equal to
+ the righthand operand's lower bound subscript, minus one. When a single
+ element is pushed on to the end of a one-dimensional array, the result is
+ an array retaining the lower bound of the lefthand operand. For example:
SELECT array_dims(1 || ARRAY[2,3]);
array_dims
------------
[0:2]
(1 row)
+
+SELECT array_dims(ARRAY[1,2] || 3);
+ array_dims
+------------
+ [1:3]
+(1 row)
+
+
+
+ When two arrays with an equal number of dimensions are concatenated, the
+ result retains the lower bound subscript of the lefthand operand's outer
+ dimension. The result is an array comprising every element of the lefthand
+ operand followed by every element of the righthand operand. For example:
+SELECT array_dims(ARRAY[1,2] || ARRAY[3,4,5]);
+ array_dims
+------------
+ [1:5]
+(1 row)
+
+SELECT array_dims(ARRAY[[1,2],[3,4]] || ARRAY[[5,6],[7,8],[9,0]]);
+ array_dims
+------------
+ [1:5][1:2]
+(1 row)
+
+
+
+ When an N>-dimensional array is pushed on to the beginning
+ or end of an N+1>-dimensional array, the result is
+ analogous to the element-array case above. Each N>-dimensional
+ sub-array is essentially an element of the N+1>-dimensional
+ array's outer dimension. For example:
+SELECT array_dims(ARRAY[1,2] || ARRAY[[3,4],[5,6]]);
+ array_dims
+------------
+ [0:2][1:2]
+(1 row)
(1 row)
SELECT array_cat(ARRAY[1,2], ARRAY[3,4]);
- array_cat
----------------
- {{1,2},{3,4}}
+ array_cat
+-----------
+ {1,2,3,4}
(1 row)
SELECT array_cat(ARRAY[[1,2],[3,4]], ARRAY[5,6]);