Масиви й серіїстандарт SQL

CARDINALITY

Рахує, скільки елементів у масиві.

Синтаксис

CARDINALITY(<масив>)

Повертає кількість усіх елементів масиву, скільки б у ньому не було вимірів. Для порожнього масиву — 0. Схожа ARRAY_LENGTH питає про довжину в конкретному вимірі й для порожнього масиву дає NULL. Зручно, щоб дізнатися, скільки тегів чи ролей у рядку, або відібрати рядки з непорожнім списком.

Дані для прикладів

employees

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

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Скільки елементів
SELECT CARDINALITY(ARRAY['sql', 'postgres', 'database']) AS tag_count;
tag_count
3
Скільки частин у кожному телефоні
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
Двовимірний масив
SELECT CARDINALITY(ARRAY[[1, 2], [3, 4]]) AS all_elements;
all_elements
4

CARDINALITY рахує всі елементи — 4, а ARRAY_LENGTH(…, 1) дала б кількість рядків — 2.

Зверни увагу

Щоб перевірити, чи масив порожній, пиши CARDINALITY(tags) = 0: з ARRAY_LENGTH така перевірка не спрацює, бо для порожнього масиву вона дає NULL.

NULL замість масиву дає NULL, а не 0.

NULL усередині масиву — теж елемент: CARDINALITY(ARRAY['a', NULL]) дає 2.

Схожі функції