sql >> Databáze >  >> RDS >> PostgreSQL

Jak zkontrolovat, zda je pole prázdné v Postgres

array_length() vyžaduje dva parametry, druhý je rozměr pole:

array_length(id_clients, 1) > 0

Takže:

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

To vylučuje prázdné pole a NULL.

Nebo použijte cardinality() v Postgres 9.4 nebo novější. Viz přidaná odpověď od @bronzenose.

Ale pokud zřetězíte dotaz ke spuštění pomocí EXECUTE , bylo by chytřejší předávat hodnoty pomocí USING doložka. Příklady:

BTW, explicitně zkontrolovat, zda pole je prázdné (jak říká váš nadpis – ale to není co zde potřebujete) stačí porovnat s prázdným polem:

id_clients = '{}'

To je vše. Získáte:

TRUE .. pole je prázdné
NULL .. pole je NULL
FALSE .. jakýkoli jiný případ (pole má prvky – i když jen NULL prvky)



  1. Yii2 Vícenásobná přiřazení RBAC pro každého uživatele na základě skupin

  2. MySQL dotaz běží dvakrát

  3. Nejjednodušší způsob, jak aktivovat PHP a MySQL na Mac OS 10.6 (Snow Leopard), 10.7 (Lion), 10.8 (Mountain Lion)?

  4. Zkopírujte hodnotu sloupce z jedné tabulky do jiné odpovídající ID