2 9.19. Array Functions and Operators #
4 Table 9.56 shows the specialized operators available for array types.
5 In addition to those, the usual comparison operators shown in Table 9.1
6 are available for arrays. The comparison operators compare the array
7 contents element-by-element, using the default B-tree comparison
8 function for the element data type, and sort based on the first
9 difference. In multidimensional arrays the elements are visited in
10 row-major order (last subscript varies most rapidly). If the contents
11 of two arrays are equal but the dimensionality is different, the first
12 difference in the dimensionality information determines the sort order.
14 Table 9.56. Array Operators
22 anyarray @> anyarray → boolean
24 Does the first array contain the second, that is, does each element
25 appearing in the second array equal some element of the first array?
26 (Duplicates are not treated specially, thus ARRAY[1] and ARRAY[1,1] are
27 each considered to contain the other.)
29 ARRAY[1,4,3] @> ARRAY[3,1,3] → t
31 anyarray <@ anyarray → boolean
33 Is the first array contained by the second?
35 ARRAY[2,2,7] <@ ARRAY[1,7,4,2,6] → t
37 anyarray && anyarray → boolean
39 Do the arrays overlap, that is, have any elements in common?
41 ARRAY[1,4,3] && ARRAY[2,1] → t
43 anycompatiblearray || anycompatiblearray → anycompatiblearray
45 Concatenates the two arrays. Concatenating a null or empty array is a
46 no-op; otherwise the arrays must have the same number of dimensions (as
47 illustrated by the first example) or differ in number of dimensions by
48 one (as illustrated by the second). If the arrays are not of identical
49 element types, they will be coerced to a common type (see
52 ARRAY[1,2,3] || ARRAY[4,5,6,7] → {1,2,3,4,5,6,7}
54 ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9.9]] → {{1,2,3},{4,5,6},{7,8,9.9}}
56 anycompatible || anycompatiblearray → anycompatiblearray
58 Concatenates an element onto the front of an array (which must be empty
61 3 || ARRAY[4,5,6] → {3,4,5,6}
63 anycompatiblearray || anycompatible → anycompatiblearray
65 Concatenates an element onto the end of an array (which must be empty
68 ARRAY[4,5,6] || 7 → {4,5,6,7}
70 See Section 8.15 for more details about array operator behavior. See
71 Section 11.2 for more details about which operators support indexed
74 Table 9.57 shows the functions available for use with array types. See
75 Section 8.15 for more information and examples of the use of these
78 Table 9.57. Array Functions
86 array_append ( anycompatiblearray, anycompatible ) → anycompatiblearray
88 Appends an element to the end of an array (same as the
89 anycompatiblearray || anycompatible operator).
91 array_append(ARRAY[1,2], 3) → {1,2,3}
93 array_cat ( anycompatiblearray, anycompatiblearray ) →
96 Concatenates two arrays (same as the anycompatiblearray ||
97 anycompatiblearray operator).
99 array_cat(ARRAY[1,2,3], ARRAY[4,5]) → {1,2,3,4,5}
101 array_dims ( anyarray ) → text
103 Returns a text representation of the array's dimensions.
105 array_dims(ARRAY[[1,2,3], [4,5,6]]) → [1:2][1:3]
107 array_fill ( anyelement, integer[] [, integer[] ] ) → anyarray
109 Returns an array filled with copies of the given value, having
110 dimensions of the lengths specified by the second argument. The
111 optional third argument supplies lower-bound values for each dimension
112 (which default to all 1).
114 array_fill(11, ARRAY[2,3]) → {{11,11,11},{11,11,11}}
116 array_fill(7, ARRAY[3], ARRAY[2]) → [2:4]={7,7,7}
118 array_length ( anyarray, integer ) → integer
120 Returns the length of the requested array dimension. (Produces NULL
121 instead of 0 for empty or missing array dimensions.)
123 array_length(array[1,2,3], 1) → 3
125 array_length(array[]::int[], 1) → NULL
127 array_length(array['text'], 2) → NULL
129 array_lower ( anyarray, integer ) → integer
131 Returns the lower bound of the requested array dimension.
133 array_lower('[0:2]={1,2,3}'::integer[], 1) → 0
135 array_ndims ( anyarray ) → integer
137 Returns the number of dimensions of the array.
139 array_ndims(ARRAY[[1,2,3], [4,5,6]]) → 2
141 array_position ( anycompatiblearray, anycompatible [, integer ] ) →
144 Returns the subscript of the first occurrence of the second argument in
145 the array, or NULL if it's not present. If the third argument is given,
146 the search begins at that subscript. The array must be one-dimensional.
147 Comparisons are done using IS NOT DISTINCT FROM semantics, so it is
148 possible to search for NULL.
150 array_position(ARRAY['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'],
153 array_positions ( anycompatiblearray, anycompatible ) → integer[]
155 Returns an array of the subscripts of all occurrences of the second
156 argument in the array given as first argument. The array must be
157 one-dimensional. Comparisons are done using IS NOT DISTINCT FROM
158 semantics, so it is possible to search for NULL. NULL is returned only
159 if the array is NULL; if the value is not found in the array, an empty
162 array_positions(ARRAY['A','A','B','A'], 'A') → {1,2,4}
164 array_prepend ( anycompatible, anycompatiblearray ) →
167 Prepends an element to the beginning of an array (same as the
168 anycompatible || anycompatiblearray operator).
170 array_prepend(1, ARRAY[2,3]) → {1,2,3}
172 array_remove ( anycompatiblearray, anycompatible ) → anycompatiblearray
174 Removes all elements equal to the given value from the array. The array
175 must be one-dimensional. Comparisons are done using IS NOT DISTINCT
176 FROM semantics, so it is possible to remove NULLs.
178 array_remove(ARRAY[1,2,3,2], 2) → {1,3}
180 array_replace ( anycompatiblearray, anycompatible, anycompatible ) →
183 Replaces each array element equal to the second argument with the third
186 array_replace(ARRAY[1,2,5,4], 5, 3) → {1,2,3,4}
188 array_reverse ( anyarray ) → anyarray
190 Reverses the first dimension of the array.
192 array_reverse(ARRAY[[1,2],[3,4],[5,6]]) → {{5,6},{3,4},{1,2}}
194 array_sample ( array anyarray, n integer ) → anyarray
196 Returns an array of n items randomly selected from array. n may not
197 exceed the length of array's first dimension. If array is
198 multi-dimensional, an “item” is a slice having a given first subscript.
200 array_sample(ARRAY[1,2,3,4,5,6], 3) → {2,6,1}
202 array_sample(ARRAY[[1,2],[3,4],[5,6]], 2) → {{5,6},{1,2}}
204 array_shuffle ( anyarray ) → anyarray
206 Randomly shuffles the first dimension of the array.
208 array_shuffle(ARRAY[[1,2],[3,4],[5,6]]) → {{5,6},{1,2},{3,4}}
210 array_sort ( array anyarray [, descending boolean [, nulls_first
211 boolean ]] ) → anyarray
213 Sorts the first dimension of the array. The sort order is determined by
214 the default sort ordering of the array's element type; however, if the
215 element type is collatable, the collation to use can be specified by
216 adding a COLLATE clause to the array argument.
218 If descending is true then sort in descending order, otherwise
219 ascending order. If omitted, the default is ascending order. If
220 nulls_first is true then nulls appear before non-null values, otherwise
221 nulls appear after non-null values. If omitted, nulls_first is taken to
222 have the same value as descending.
224 array_sort(ARRAY[[2,4],[2,1],[6,5]]) → {{2,1},{2,4},{6,5}}
226 array_to_string ( array anyarray, delimiter text [, null_string text ]
229 Converts each array element to its text representation, and
230 concatenates those separated by the delimiter string. If null_string is
231 given and is not NULL, then NULL array entries are represented by that
232 string; otherwise, they are omitted. See also string_to_array.
234 array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*') → 1,2,3,*,5
236 array_upper ( anyarray, integer ) → integer
238 Returns the upper bound of the requested array dimension.
240 array_upper(ARRAY[1,8,3,7], 1) → 4
242 cardinality ( anyarray ) → integer
244 Returns the total number of elements in the array, or 0 if the array is
247 cardinality(ARRAY[[1,2],[3,4]]) → 4
249 trim_array ( array anyarray, n integer ) → anyarray
251 Trims an array by removing the last n elements. If the array is
252 multidimensional, only the first dimension is trimmed.
254 trim_array(ARRAY[1,2,3,4,5,6], 2) → {1,2,3,4}
256 unnest ( anyarray ) → setof anyelement
258 Expands an array into a set of rows. The array's elements are read out
265 unnest(ARRAY[['foo','bar'],['baz','quux']]) →
271 unnest ( anyarray, anyarray [, ... ] ) → setof anyelement, anyelement
274 Expands multiple arrays (possibly of different data types) into a set
275 of rows. If the arrays are not all the same length then the shorter
276 ones are padded with NULLs. This form is only allowed in a query's FROM
277 clause; see Section 7.2.1.4.
279 select * from unnest(ARRAY[1,2], ARRAY['foo','bar','baz']) as x(a,b) →
286 See also Section 9.21 about the aggregate function array_agg for use