Функции и операторы для массивов
В Таблице 51 приведены специальные операторы, имеющиеся для типов массивов. Кроме них для массивов имеются обычные операторы сравнения, перечисленные в таблице Операторы сравнения. Эти операторы сравнения сопоставляют содержимое массивов поэлементно, используя функцию сравнения для B-дерева, определенную для типа данных этого элемента по умолчанию, и сортируют по принципу первого различия. В многомерных массивах элементы просматриваются в построчном порядке (последний индекс меняется в первую очередь). Если содержимое двух массивов одинаково, но размерности отличаются, порядок сортировки определяется первым отличием в информации о размерности.
Таблица 51. Операторы для массивов
Оператор |
||
---|---|---|
Описание Пример(ы) |
||
anyarray @> anyarray → boolean |
||
Первый массив содержит второй, то есть каждый элемент, находящийся во втором массиве, равен какому-либо элементу первого? (Дубликаты обрабатываются на общих основаниях, поэтому массивы ARRAY[1] и ARRAY[1,1] считаются содержащими друг друга.)
|
||
anyarray <@ anyarray → boolean |
||
Первый массив содержится во втором?
|
||
anyarray && anyarray → boolean |
||
Массивы пересекаются, то есть имеют какие-либо общие элементы?
|
||
anycompatiblearray || anycompatiblearray → anycompatiblearray |
||
Конкатенирует два массива. Со значениями NULL или пустыми массивами эта операция не проводится; в иных случаях массивы должны иметь одинаковое число размерностей (как показано в первом примере) или отличаться на одну размерность (как показано во втором примере). Если эти массивы не одинаковых типов элементов, они будут приведены к общему типу (см. раздел UNION, CASE и связанные конструкции).
|
||
anycompatible || anycompatiblearray → anycompatiblearray |
||
Конкатенирует элемент с началом массива (который должен быть пустым или одномерным).
|
||
anycompatiblearray || anycompatible → anycompatiblearray |
||
Конкатенирует элемент с концом массива (который должен быть пустым или одномерным).
|
Более подробную информацию о поведении операторов для массивов см. в разделе Массивы. Более подробную информацию о том, какие операторы поддерживают операции с индексами, см. в разделе Типы индексов.
В Таблице 52 приведены имеющиеся функции для использования с типами массивами. Дополнительную информацию и примеры использования этих функций см. в разделе Массивы.
Таблица 52. Функции для массивов
Функция |
||
---|---|---|
Описание Пример(ы) |
||
array_append ( anycompatiblearray, anycompatible ) → anycompatiblearray |
||
Добавляет элемент в конец массива (так же, как оператор
|
||
array_cat ( anycompatiblearray, anycompatiblearray ) → anycompatiblearray |
||
Конкатенирует два массива (так же, как оператор
|
||
array_dims ( anyarray ) → text |
||
Возвращает текстовое представление размерностей массива.
|
||
array_fill ( anyelement, integer[] [, integer[] ] ) → anyarray |
||
Возвращает массив, заполненный копиями заданного значения и имеющий размерности той длины, которая указана во втором аргументе. Необязательный третий аргумент предоставляет значения нижней границы для каждой размерности (по умолчанию все они равны 1).
|
||
array_length ( anyarray, integer ) → integer |
||
Возвращает длину запрошенной размерности массива.
|
||
array_lower ( anyarray, integer ) → integer |
||
Возвращает нижнюю границу запрошенной размерности массива.
|
||
array_ndims ( anyarray ) → integer |
||
Возвращает количество размерностей массива.
|
||
array_position ( anycompatiblearray, anycompatible [, integer ] ) → integer |
||
Возвращает индекс первого вхождения второго аргумента в массиве или NULL, если таковой отсутствует. Если задан третий аргумент, поиск начинается с этого индекса. Массив должен быть одномерным. Сравнения производятся с применением семантики IS NOT DISTINCT FROM, что позволяет искать значения NULL.
|
||
array_positions ( anycompatiblearray, anycompatible ) → integer[] |
||
Возвращает массив индексов всех вхождений второго аргумента в массиве, заданном в первом аргументе. Массив должен быть одномерным. Сравнения производятся с применением семантики IS NOT DISTINCT FROM, что позволяет искать значения NULL. NULL возвращается, только массив равен NULL; если заданное значение отсутствует в массиве, возвращается пустой массив.
|
||
array_prepend ( anycompatible, anycompatiblearray ) → anycompatiblearray |
||
Добавляет элемент в начало массива (так же, как оператор
|
||
array_remove ( anycompatiblearray, anycompatible ) → anycompatiblearray |
||
Удаляет из массива все элементы, равные заданному значению. Массив должен быть одномерным. Сравнения производятся с применением семантики IS NOT DISTINCT FROM, что позволяет удалять значения NULL.
|
||
array_replace ( anycompatiblearray, anycompatible, anycompatible ) → anycompatiblearray |
||
Заменяет каждый элемент массива, равный второму аргументу, значением третьего аргумента.
|
||
array_to_string ( массив anyarray, разделитель text [, нулевая_строка text ] ) → text |
||
Преобразует каждый элемент массива в текстовое представление и конкатенирует те из них, что разделены строкой-разделителем. Если задана нулевая_строка и она отлична от NULL, то эта строка представляет содержащиеся в массиве записи NULL; в противном случае такие записи опускаются.
|
||
array_upper ( anyarray, integer ) → integer |
||
Возвращает верхнюю границу запрошенной размерности массива.
|
||
cardinality ( anyarray ) → integer |
||
Возвращает общее количество элементов в массиве или 0, если это пустой массив.
|
||
trim_array ( массив anyarray, n integer ) → anyarray |
||
Усекает массив, удаляя последние n элементов. Если массив многомерный, усекается только первая размерность.
|
||
unnest ( anyarray ) → setof anyelement |
||
Разворачивает массив в набор строк. Элементы массива прочитываются в порядке хранения.
|
||
unnest ( anyarray, anyarray [, ... ] ) → setof anyelement, anyelement [, ... ] |
||
Разворачивает несколько массивов (возможно, разных типов данных) в набор строк. Если у массивов неодинаковая длина, то более короткие заполняются значениями NULL. Эта форма допускается только в предложении FROM; см. подраздел Табличные функции.
|
Описание работающей с массивами функции array_agg см. в разделе Агрегатные функции.