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

Bagaimana cara menghapus elemen array di PostgreSQL?

Gunakan unnest() dengan array_agg() , misalnya:

with cte(array1, array2) as (
    values (array[1,2,3,4], array[1,4])
    )
select array_agg(elem)
from cte, unnest(array1) elem
where elem <> all(array2);

 array_agg 
-----------
 {2,3}
(1 row)

Jika Anda sering membutuhkan fungsi ini, tentukan fungsi sederhananya:

create or replace function array_diff(array1 anyarray, array2 anyarray)
returns anyarray language sql immutable as $$
    select coalesce(array_agg(elem), '{}')
    from unnest(array1) elem
    where elem <> all(array2)
$$;

Anda dapat menggunakan fungsi untuk array apa pun, tidak hanya int[] :

select array_diff(array['a','b','c','d'], array['a','d']);

 array_diff 
------------
 {b,c}
(1 row) 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Keamanan tingkat baris menggunakan prisma dan postgres

  2. PostgreSQL - Konversi string ke integer ASCII

  3. Bagaimana saya bisa memasukkan komentar kolom di PostgreSQL melalui Python?

  4. Kunci utama dengan pemesanan ASC atau DESC?

  5. Bagaimana Log() Bekerja di PostgreSQL