PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách kiểm tra xem một mảng có trống không trong Postgres

array_length() yêu cầu hai tham số, thứ hai là thứ nguyên của mảng:

array_length(id_clients, 1) > 0

Vì vậy:

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

Điều này loại trừ cả mảng trống KHÔNG ĐỦ.

Hoặc sử dụng cardinality() trong Postgres 9.4 trở lên. Xem câu trả lời được bổ sung bởi @bosystemnose.

Nhưng nếu bạn đang nối một truy vấn để chạy với EXECUTE , sẽ thông minh hơn nếu chuyển các giá trị bằng USING mệnh đề. Ví dụ:

BTW, để kiểm tra rõ ràng xem một mảng trống (như tiêu đề của bạn nói - nhưng đó không phải những gì bạn cần ở đây) chỉ cần so sánh nó với một mảng trống:

id_clients = '{}'

Đó là tất cả. Bạn nhận được:

TRUE .. mảng trống
NULL .. mảng là NULL
FALSE .. bất kỳ trường hợp nào khác (mảng có các phần tử - ngay cả khi chỉ là NULL phần tử)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn toàn bộ giá trị của DataTable hàng loạt vào bảng postgreSQL

  2. (Các) lệnh nào `heroku pgbackups:capture` chạy trên máy chủ để thực hiện sao lưu?

  3. Làm thế nào để trả về một giá trị từ một thủ tục được lưu trữ (không phải hàm)?

  4. Cập nhật một cột của một bảng với một cột của một bảng khác trong PostgreSQL

  5. Làm thế nào để lấy id của hàng đã được chọn bởi hàm tổng hợp?