PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Postgres menambahkan atau mengatur setiap elemen (jika tidak ada) dari array ke kolom array

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.

http://rextester.com/GKS7382



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Urutan berdasarkan tanggal, tambahkan tanggal sebelum dan tanggal setelah postgresql dengan subquery

  2. PostgreSQL:format interval sebagai menit

  3. pg_stat_activity tidak diperbarui dalam prosedur atau transaksi

  4. Apakah lebih baik menggunakan tabel daripada tipe bidang array di PostgreSql ketika array tidak melebihi 50 elemen?

  5. Bagaimana cara menggunakan `unaccent` dengan pencarian teks lengkap di Django 1.10?