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

Bagaimana cara memeriksa apakah sebuah array kosong di Postgres

array_length() membutuhkan dua parameter, yang kedua adalah dimensi larik:

array_length(id_clients, 1) > 0

Jadi:

IF array_length(id_clients, 1) > 0 THEN
    query := query || format(' AND id = ANY(%L))', id_clients);
END IF;

Ini tidak termasuk array kosong dan NULL.

Atau gunakan cardinality() di Postgres 9.4 atau lebih baru. Lihat jawaban tambahan dari @bronzenose.

Tetapi jika Anda menggabungkan kueri untuk dijalankan dengan EXECUTE , akan lebih pintar untuk meneruskan nilai dengan USING ayat. Contoh:

BTW, untuk secara eksplisit memeriksa apakah array kosong (seperti yang dikatakan judul Anda - tapi itu tidak apa yang Anda butuhkan di sini) cukup bandingkan dengan array kosong:

id_clients = '{}'

Itu saja. Anda mendapatkan:

TRUE .. array kosong
NULL .. array adalah NULL
FALSE .. kasus lain (array memiliki elemen - meskipun hanya elemen NULL)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernasi tidak menyimpan Objek di Database?

  2. QT5:Gagal memuat driver psql di windows

  3. Metode Konversi. Metode yang ditentukan pada tipe tidak dapat diterjemahkan ke dalam ekspresi penyimpanan LINQ ke Entitas

  4. Bagaimana cara mengubah posisi kolom dalam tabel database PostgreSQL?

  5. Tetapkan nilai pengembalian default untuk fungsi Postgres