Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2023, 02:51   #1
polin11
Форумчанин
 
Регистрация: 07.06.2015
Сообщений: 164
По умолчанию Операции над массивами

Использую 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]?
polin11 вне форума Ответить с цитированием
Старый 08.03.2023, 21:58   #2
Lapita12
Новичок
Джуниор
 
Регистрация: 08.03.2023
Сообщений: 24
По умолчанию

1) Чтобы объединить два массива и удалить дубликаты, можно использовать оператор UNION вместо оператора ||
Код:
SELECT ARRAY(SELECT DISTINCT unnest(array[1,2,3]) UNION SELECT DISTINCT unnest(array[1,4)]));
2) Для удаления элементов из массива на основе другого массива можно использовать функцию array_remove()
Код:
SELECT array_remove(array[1,2,3], 1);
Этот запрос вернет массив [2,3].
Однако, для удаления элементов из массива на основе другого массива, необходимо использовать цикл, так как функция array_remove() удаляет только первое вхождение элемента в массиве. Например:
Код:
SELECT array_remove(array_remove(array[1,2,3], unnest(array[1,4])), NULL);
Обратите внимание, что мы использовали функцию unnest() для развертки массива в ряд значений, а также добавили NULL в array_remove(), чтобы удалить все значения NULL, которые могут появиться в результате удаления элементов из массива.
Lapita12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операции с массивами. TheStevesCompany C# (си шарп) 3 30.10.2016 14:23
Операции с массивами (asm) absolutego Помощь студентам 0 20.12.2013 01:13
Операции над массивами VinDiz Помощь студентам 6 18.01.2012 14:46
С++. Операции с массивами Сергей Человек Помощь студентам 8 09.07.2009 11:48
Операции с массивами Hakman Помощь студентам 10 19.02.2008 18:36