PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak sprawdzić, czy tablica jest pusta w Postgresie?

array_length() wymaga dwóch parametry, drugi to wymiar tablicy:

array_length(id_clients, 1) > 0

A więc:

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

Wyklucza to zarówno pustą tablicę i NULL.

Lub użyj cardinality() w Postgresie 9.4 lub nowszym. Zobacz dodaną odpowiedź @bronzenose.

Ale jeśli łączysz zapytanie do uruchomienia z EXECUTE , mądrzej byłoby przekazać wartości za pomocą USING klauzula. Przykłady:

BTW, aby wyraźnie sprawdzić, czy tablica jest pusta (jak mówi twój tytuł - ale to nie czego potrzebujesz tutaj) po prostu porównaj to z pustą tablicą:

id_clients = '{}'

To wszystko. Otrzymujesz:

TRUE .. tablica jest pusta
NULL .. tablica ma wartość NULL
FALSE .. w każdym innym przypadku (tablica zawiera elementy - nawet jeśli są to tylko elementy 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. Węzeł jest 20 razy szybszy niż .NET Core podczas łączenia się z Postgres

  2. Odroczone, unikatowe ograniczenie bez rozróżniania wielkości liter

  3. Sklonuj rekord, a następnie użyj jego identyfikatora automatycznego inkrementacji do dalszych operacji

  4. Jak budować relacyjne tabele na dwustronnym rynku?

  5. Psycopg2, Postgresql, Python:najszybszy sposób na zbiorcze wstawianie