Arrays y seriessolo PostgreSQL

ARRAY_LENGTH

Devuelve la longitud de un array en la dimensión indicada.

Sintaxis

ARRAY_LENGTH(<array>, <dimensión>)

Para una lista normal, la dimensión es 1: ARRAY_LENGTH(tags, 1). Se diferencia de CARDINALITY en dos cosas: pregunta por una dimensión concreta y, para un array vacío, devuelve NULL y no 0.

La longitud de una lista
SELECT ARRAY_LENGTH(ARRAY['sql', 'postgres', 'database'], 1) AS tag_count;
tag_count
3
Un array vacío: CARDINALITY frente a ARRAY_LENGTH
SELECT CARDINALITY(ARRAY[]::text[]) AS cardinality,
ARRAY_LENGTH(ARRAY[]::text[], 1) AS array_length;
cardinalityarray_length
0NULL

Para un array vacío, CARDINALITY da 0 y ARRAY_LENGTH, NULL.

Filas y columnas de un array bidimensional
SELECT ARRAY_LENGTH(ARRAY[[1, 2, 3], [4, 5, 6]], 1) AS rows_count,
ARRAY_LENGTH(ARRAY[[1, 2, 3], [4, 5, 6]], 2) AS columns_count;
rows_countcolumns_count
23

Ten en cuenta

Para un array vacío da NULL, así que ARRAY_LENGTH(tags, 1) = 0 nunca se cumple. Comprueba IS NULL o usa CARDINALITY(tags) = 0.

La dimensión es obligatoria: ARRAY_LENGTH(ARRAY['a']) da el error function array_length(text[]) does not exist.

Una dimensión que el array no tiene da NULL: ARRAY_LENGTH(ARRAY['a'], 2).

Funciones relacionadas

Más detalles en el curso