sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo verificar si una matriz está vacía en Postgres

array_length() requiere dos parámetros, siendo el segundo la dimensión de la matriz:

array_length(id_clients, 1) > 0

Entonces:

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

Esto excluye la matriz vacía y NULO.

O use cardinality() en Postgres 9.4 o posterior. Ver respuesta agregada por @bronzenose.

Pero si está concatenando una consulta para ejecutar con EXECUTE , sería más inteligente pasar valores con USING cláusula. Ejemplos:

Por cierto, para verificar explícitamente si una matriz está vacía (como dice su título - pero eso es no lo que necesita aquí) simplemente compárelo con una matriz vacía:

id_clients = '{}'

Eso es todo. obtienes:

TRUE .. la matriz está vacía
NULL .. la matriz es NULL
FALSE .. cualquier otro caso (la matriz tiene elementos, incluso si solo son elementos NULL)