Arrays y seriessolo PostgreSQL

ARRAY_REMOVE

Devuelve un array sin ninguno de los elementos con el valor indicado.

Sintaxis

ARRAY_REMOVE(<array>, <valor>)
ARRAY_REPLACE(<array>, <buscar>, <reemplazo>)

Quita cada aparición del valor, no solo la primera, y devuelve un array nuevo. También sabe quitar NULL: ARRAY_REMOVE(<array>, NULL). Para sustituir un valor en lugar de borrarlo, usa ARRAY_REPLACE.

Quitar un elemento
SELECT ARRAY_REMOVE(ARRAY['sql', 'draft', 'postgres', 'draft'], 'draft') AS cleaned;
cleaned
["sql","postgres"]

ARRAY_REMOVE quita todas las apariciones, no solo la primera.

Quitar NULL
SELECT ARRAY_REMOVE(ARRAY['sql', NULL, 'postgres'], NULL) AS without_nulls;
without_nulls
["sql","postgres"]
Sustituir en lugar de quitar
SELECT ARRAY_REPLACE(ARRAY['sql', 'draft', 'postgres'], 'draft', 'final') AS replaced;
replaced
["sql","final","postgres"]

Ten en cuenta

Quita todas las apariciones, no solo la primera: no existe una variante de «solo una».

Solo para arrays de una dimensión: con ARRAY[[1, 2], [3, 4]] obtendrás removing elements from multidimensional arrays is not supported.

La función solo devuelve un array nuevo. Para cambiar los datos de una tabla, necesitas UPDATE … SET tags = ARRAY_REMOVE(tags, 'draft').