Saya akan berasumsi bahwa arr_str
bertipe text[]
(walaupun Anda tidak menggunakan format yang tepat untuk mereka, jadi saya mungkin salah; jika itu masalahnya, Anda harus memberikan nilai Anda ke text[]
).
Gunakan pernyataan berikut, jika Anda ingin menghapus duplikasi, yang sudah ada di 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}'
Atau, gunakan yang berikut ini jika Anda ingin mempertahankan duplikasi yang ada:
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}'
Kedua pernyataan ini tidak akan menyentuh baris, yang tetap tidak akan terpengaruh (lihat where not arr_str @> '{b,c,d}'
predikat). Ini biasanya merupakan praktik terbaik, dan hampir selalu disarankan, jika ada pemicu.