Ik neem aan dat arr_str
is van het type text[]
(hoewel je niet het juiste formaat ervoor hebt gebruikt, dus ik kan het mis hebben; als dat het geval is, moet je je waarde casten naar text[]
).
Gebruik de volgende instructie als u duplicaten wilt verwijderen die al aanwezig zijn in de arr_str
kolom:
update tabl1
set arr_str = (select array_agg(distinct e) from unnest(arr_str || '{b,c,d}') e)
where not arr_str @> '{b,c,d}'
Of gebruik de volgende als u bestaande duplicaten wilt behouden:
update tabl1
set arr_str = arr_str || array(select unnest('{b,c,d}'::text[]) except select unnest(arr_str))
where not arr_str @> '{b,c,d}'
Beide uitspraken raken de rijen niet, wat sowieso niet wordt beïnvloed (kijk naar de where not arr_str @> '{b,c,d}'
predikaat). Dit is meestal de beste methode en wordt bijna altijd aanbevolen als er triggers in het spel zijn.