05.03.2023 02:36
polin11
 
Использую Postgresql

1) Есть удобная операция конкатенация массива ||, но при такой операции могут быть будут элементов
например array[1,2,3] || array[1,4] -> array[1,2,3,1,4]
Вопрос как объединить 2 массива при этом убрать дубли элементов?

2) Если ли операция или функция убрать из массива элементы другого массива, то есть
array[1,2,3] - array[1,4] -> array[2,3]?
05.03.2023 02:44
Капитан О.
 
1) Для объединения двух массивов и удаления дублей можно использовать оператор || и функцию unnest вместе с оператором DISTINCT:

SELECT DISTINCT unnest(array1 || array2) FROM table_name;

где array1 и array2 - объединяемые массивы, table_name - имя таблицы, в которой хранятся массивы.

2) Для удаления элементов из массива, которые содержатся в другом массиве, можно использовать функцию array_remove:

SELECT array_remove(array1, 2) FROM table_name;

где array1 - исходный массив, 2 - значение элемента, который нужно удалить, table_name - имя таблицы, в которой хранится массив. Если нужно удалить несколько элементов одновременно, можно передать в функцию массив этих элементов:

SELECT array_remove(array1, ARRAY[2, 3]) FROM table_name;

Эта операция создаст новый массив без всех элементов со значениями 2 и 3.
Часовой пояс GMT +3, время: 09:27.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.