PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да проверите дали даден масив е празен в Postgres

array_length() изисква две параметри, като втората е размерността на масива:

array_length(id_clients, 1) > 0

И така:

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

Това изключва както празния масив и NULL.

Или използвайте cardinality() в Postgres 9.4 или по-нова версия. Вижте добавения отговор от @bronzenose.

Но ако свързвате заявка за изпълнение с EXECUTE , би било по-умно да предавате стойности с USING клауза. Примери:

Между другото, за изрична проверка дали масивът е празен (както се казва в заглавието ви - но това не е какво ви трябва тук) просто го сравнете с празен масив:

id_clients = '{}'

Това е всичко. Получавате:

TRUE .. масивът е празен
NULL .. масивът е NULL
FALSE .. всеки друг случай (масивът има елементи - дори и само 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. Извикване на командата psql pg_dump в пакетен скрипт

  2. Използване на множество PostgreSQL схеми с Rails модели

  3. Пролетна конференция FLOSS UK

  4. Как да внедрите Select For Update в EF Core

  5. CREATE SCHEMA IF NOT EXISTS предизвиква грешка при дублиране на ключ