Předpokládám, že arr_str
je typu text[]
(ačkoli jste pro ně nepoužili správný formát, takže se mohu mýlit; pokud je to tak, budete muset přenést svou hodnotu do text[]
).
Pokud chcete odstranit duplicity, které jsou již v arr_str
, použijte následující příkaz sloupec:
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}'
Nebo použijte následující, pokud chcete zachovat existující duplikace:
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}'
Oba tyto příkazy se nedotknou řádků, které stejně nebudou ovlivněny (podívejte se na where not arr_str @> '{b,c,d}'
predikát). Toto je obvykle nejlepší postup a téměř vždy se doporučuje, když se jedná o spouštěče.