sql >> Database >  >> RDS >> PostgreSQL

Hoe te controleren of een array leeg is in Postgres

array_length() vereist twee parameters, de tweede is de afmeting van de array:

array_length(id_clients, 1) > 0

Dus:

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

Dit sluit zowel lege arrays en . uit NULL.

Of gebruik cardinality() in Postgres 9.4 of hoger. Zie toegevoegd antwoord van @bronzenose.

Maar als u een query samenvoegt om uit te voeren met EXECUTE , zou het slimmer zijn om waarden door te geven met een USING clausule. Voorbeelden:

Trouwens, om expliciet te controleren of een array leeg is (zoals je titel al zegt - maar dat is niet wat je hier nodig hebt) vergelijk het gewoon met een lege array:

id_clients = '{}'

Dat is alles. Je krijgt:

TRUE .. array is leeg
NULL .. array is NULL
FALSE .. elk ander geval (array heeft elementen - zelfs als het alleen NULL-elementen zijn)



  1. vriendenlijst ophalen in mysql

  2. SQL Pivot - Weet hoe u rijen naar kolommen converteert

  3. SQL:houd het aantal in de rij of selecteer het aantal uit db

  4. SELECT werkt niet in node.js