Функции и операторы для массивов
Ниже, в подразделе Операторы для массивов, приведены специальные операторы, имеющиеся для типов массивов. Кроме них для массивов имеются обычные операторы сравнения, перечисленные в подразделе Операторы сравнения. Эти операторы сравнения сопоставляют содержимое массивов поэлементно, используя стандартную функцию сравнения B-дерева для типа данных этого элемента, и сортируют его по принципу первого различия. В многомерных массивах элементы просматриваются в построчном порядке (последний индекс меняется в первую очередь). Если содержимое двух массивов одинаково, но размерности отличаются, порядок сортировки определяется первым отличием в информации о размерности.
Операторы для массивов
Более подробную информацию о поведении операторов для массивов см. в разделе Массивы. Более подробную информацию о том, какие операторы поддерживают операции с индексами, см. в разделе Типы индексов.
anyarray @> anyarray → boolean
Первый массив содержит второй, то есть каждый элемент, находящийся во втором массиве, равен какому-либо элементу первого? (Дубликаты обрабатываются на общих основаниях, поэтому массивы ARRAY[1] и ARRAY[1,1] считаются содержащими друг друга.)
ARRAY[1,4,3] @> ARRAY[3,1,3] → t
anyarray <@ anyarray → boolean
Первый массив содержится во втором?
ARRAY[2,2,7] <@ ARRAY[1,7,4,2,6] → t
anyarray && anyarray → boolean
Массивы пересекаются, то есть имеют какие-либо общие элементы?
ARRAY[1,4,3] && ARRAY[2,1] → t
anycompatiblearray || anycompatiblearray → anycompatiblearray
Конкатенирует два массива. Со значениями NULL или пустыми массивами эта операция не проводится; в иных случаях массивы должны иметь одинаковое число размерностей (как показано в первом примере) или отличаться на одну размерность (как показано во втором примере). Если эти массивы не одинаковых типов элементов, они будут приведены к общему типу (см. раздел UNION, CASE и связанные конструкции).
ARRAY[1,2,3] || ARRAY[4,5,6,7] → {1,2,3,4,5,6,7}
ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9.9]] → {{1,2,3},{4,5,6},{7,8,9.9}}
anycompatible || anycompatiblearray → anycompatiblearray
Конкатенирует элемент с началом массива (который должен быть пустым или одномерным).
3 || ARRAY[4,5,6] → {3,4,5,6}
anycompatiblearray || anycompatible → anycompatiblearray
Конкатенирует элемент с концом массива (который должен быть пустым или одномерным).
ARRAY[4,5,6] || 7 → {4,5,6,7}
Функции для массивов
В этом подразделе приведены имеющиеся функции для использования с типами массивами. Дополнительную информацию и примеры использования этих функций см. в разделе Массивы.
Описание работающей с массивами агрегатной функции array_agg см. в разделе Агрегатные функции.
array_append
array_append ( anycompatiblearray, anycompatible ) → anycompatiblearray
Добавляет элемент в конец массива (так же, как оператор anycompatiblearray || anycompatible).
array_append(ARRAY[1,2], 3) → {1,2,3}
array_cat
array_cat ( anycompatiblearray, anycompatiblearray ) → anycompatiblearray
Конкатенирует два массива (так же, как оператор anycompatiblearray || anycompatiblearray).
array_cat(ARRAY[1,2,3], ARRAY[4,5]) → {1,2,3,4,5}
array_dims
array_dims ( anyarray ) → text
Возвращает текстовое представление размерностей массива.
array_dims(ARRAY[[1,2,3], [4,5,6]]) → [1:2][1:3]
array_fill
array_fill ( anyelement, integer[] [, integer[] ] ) → anyarray
Возвращает массив, заполненный копиями заданного значения и имеющий размерности той длины, которая указана во втором аргументе. Необязательный третий аргумент предоставляет значения нижней границы для каждой размерности (по умолчанию все они равны 1).
array_fill(11, ARRAY[2,3]) → {{11,11,11},{11,11,11}}
array_fill(7, ARRAY[3], ARRAY[2]) → [2:4]={7,7,7}
array_length
array_length ( anyarray, integer ) → integer
Возвращает длину запрошенной размерности массива. (Для пустых или отсутствующих размерностей массива выдает NULL вместо 0).
array_length(array[1,2,3], 1) → 3
array_length(array[]::int[], 1) → NULL
array_length(array['text'], 2) → NULL
array_lower
array_lower ( anyarray, integer ) → integer
Возвращает нижнюю границу запрошенной размерности массива.
array_lower('[0:2]={1,2,3}'::integer[], 1) → 0
array_ndims
array_ndims ( anyarray ) → integer
Возвращает количество размерностей массива.
array_ndims(ARRAY[[1,2,3], [4,5,6]]) → 2
array_position
array_position ( anycompatiblearray, anycompatible [, integer ] ) → integer
Возвращает индекс первого вхождения второго аргумента в массиве или NULL, если таковой отсутствует. Если задан третий аргумент, поиск начинается с этого индекса. Массив должен быть одномерным. Сравнения производятся с применением семантики IS NOT DISTINCT FROM, что позволяет искать значения NULL.
array_position(ARRAY['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'], 'mon') → 2
array_positions
array_positions ( anycompatiblearray, anycompatible ) → integer[]
Возвращает массив индексов всех вхождений второго аргумента в массиве, заданном в первом аргументе. Массив должен быть одномерным. Сравнения производятся с применением семантики IS NOT DISTINCT FROM, что позволяет искать значения NULL. NULL возвращается, только если массив равен NULL; если заданное значение в массиве не найдено, возвращается пустой массив.
array_positions(ARRAY['A','A','B','A'], 'A') → {1,2,4}
array_prepend
array_prepend ( anycompatible, anycompatiblearray ) → anycompatiblearray
Добавляет элемент в начало массива (так же, как оператор anycompatible || anycompatiblearray).
array_prepend(1, ARRAY[2,3]) → {1,2,3}
array_remove
array_remove ( anycompatiblearray, anycompatible ) → anycompatiblearray
Удаляет из массива все элементы, равные заданному значению. Массив должен быть одномерным. Сравнения производятся с применением семантики IS NOT DISTINCT FROM, что позволяет удалять значения NULL.
array_remove(ARRAY[1,2,3,2], 2) → {1,3}
array_replace
array_replace ( anycompatiblearray, anycompatible, anycompatible ) → anycompatiblearray
Заменяет каждый элемент массива, равный второму аргументу, значением третьего аргумента.
array_replace(ARRAY[1,2,5,4], 5, 3) → {1,2,3,4}
array_sample
array_sample ( arrayanyarray,n integer ) → anyarray
Возвращает массив из n элементов, случайным образом выбранных из массива. Значение n не может превышать длину первой размерности массива. Если массив многомерный, «элемент» является срезом с первым заданным индексом.
array_sample(ARRAY[1,2,3,4,5,6], 3) → {2,6,1}
array_sample(ARRAY[[1,2],[3,4],[5,6]], 2) → {{5,6},{1,2}}
array_shuffle
array_shuffle ( anyarray ) → anyarray
Случайным образом перемешивает первую размерность массива.
array_shuffle(ARRAY[[1,2],[3,4],[5,6]]) → {{5,6},{1,2},{3,4}}
array_to_string
array_to_string ( массивanyarray,разделительtext [,нулевая_строка text ] ) → text
Преобразует каждый элемент массива в текстовое представление и конкатенирует те из них, что разделены строкой-разделителем. Если задана нулевая_строка и она отлична от NULL, то эта строка представляет содержащиеся в массиве записи NULL; в противном случае такие записи опускаются. См. также string_to_array.
array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*') → 1,2,3,*,5
array_upper
array_upper ( anyarray, integer ) → integer
Возвращает верхнюю границу запрошенной размерности массива.
array_upper(ARRAY[1,8,3,7], 1) → 4
cardinality
cardinality ( anyarray ) → integer
Возвращает общее количество элементов в массиве или 0, если это пустой массив.
cardinality(ARRAY[[1,2],[3,4]]) → 4
trim_array
trim_array ( массивanyarray,n integer ) → anyarray
Усекает массив, удаляя последние n элементов. Если массив многомерный, усекается только первая размерность.
trim_array(ARRAY[1,2,3,4,5,6], 2) → {1,2,3,4}
unnest
unnest ( anyarray ) → setof anyelement
Разворачивает массив в набор строк. Элементы массива прочитываются в порядке хранения.
unnest(ARRAY[1,2]) →
1
2
unnest(ARRAY[['foo','bar'],['baz','quux']]) →
foo
bar
baz
quux
unnest ( anyarray, anyarray [, ... ] ) → setof anyelement, anyelement [, ... ]
Разворачивает несколько массивов (возможно, разных типов данных) в набор строк. Если у массивов неодинаковая длина, то более короткие заполняются значениями NULL. Эта форма допускается только в предложении FROM; см. подраздел Табличные функции.
select * from unnest(ARRAY[1,2], ARRAY['foo','bar','baz']) as x(a,b) →
a | b
---+-----
1 | foo
2 | bar
| baz