Arrays y seriesestándar SQL

CARDINALITY

Cuenta cuántos elementos tiene un array.

Sintaxis

CARDINALITY(<array>)

Devuelve el número total de elementos del array, tenga las dimensiones que tenga. Para un array vacío, 0. La parecida ARRAY_LENGTH pregunta por la longitud de una dimensión concreta y para un array vacío da NULL. Útil para saber cuántas etiquetas o roles tiene una fila, o para quedarse con las filas cuya lista no está vacía.

Datos para los ejemplos

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

Cuántos elementos
SELECT CARDINALITY(ARRAY['sql', 'postgres', 'database']) AS tag_count;
tag_count
3
Cuántas partes tiene cada teléfono
SELECT name, phone,
CARDINALITY(STRING_TO_ARRAY(phone, ' ')) AS parts
FROM employees;
namephoneparts
Emma+44 7700 9001233
LiamNULLNULL
Olivia+44 7700 9004563
Noah+44 7700 9007893
SophiaNULLNULL
Un array bidimensional
SELECT CARDINALITY(ARRAY[[1, 2], [3, 4]]) AS all_elements;
all_elements
4

CARDINALITY cuenta todos los elementos —4—, mientras que ARRAY_LENGTH(…, 1) daría el número de filas: 2.

Ten en cuenta

Para comprobar si un array está vacío, escribe CARDINALITY(tags) = 0: con ARRAY_LENGTH esa comprobación no funciona, porque para un array vacío da NULL.

NULL en lugar de un array da NULL, no 0.

Un NULL dentro del array también es un elemento: CARDINALITY(ARRAY['a', NULL]) da 2.

Funciones relacionadas