Масиви й серіїлише PostgreSQL

ARRAY_REMOVE

Повертає масив без усіх елементів із заданим значенням.

Синтаксис

ARRAY_REMOVE(<масив>, <значення>)
ARRAY_REPLACE(<масив>, <що>, <на що>)

Прибирає кожне входження значення, а не лише перше, і повертає новий масив. Уміє прибирати й NULL: ARRAY_REMOVE(<масив>, NULL). Замінити значення, а не видалити, допоможе ARRAY_REPLACE.

Прибрати елемент
SELECT ARRAY_REMOVE(ARRAY['sql', 'draft', 'postgres', 'draft'], 'draft') AS cleaned;
cleaned
["sql","postgres"]

ARRAY_REMOVE прибирає всі входження, а не лише перше.

Прибрати NULL
SELECT ARRAY_REMOVE(ARRAY['sql', NULL, 'postgres'], NULL) AS without_nulls;
without_nulls
["sql","postgres"]
Замінити, а не прибрати
SELECT ARRAY_REPLACE(ARRAY['sql', 'draft', 'postgres'], 'draft', 'final') AS replaced;
replaced
["sql","final","postgres"]

Зверни увагу

Прибирає всі входження, а не лише перше: окремого варіанта «лише одне» нема.

Лише для одновимірних масивів: для ARRAY[[1, 2], [3, 4]] буде помилка removing elements from multidimensional arrays is not supported.

Функція лише повертає новий масив. Щоб змінити дані в таблиці, потрібен UPDATE … SET tags = ARRAY_REMOVE(tags, 'draft').

Схожі функції