Подтвердить что ты не робот

Как найти размер массива в postgresql

Есть ли способ найти размер массива?

Например,

CREATE TABLE example (id integer[]) ;

INSERT INTO exam VALUES ( '{}');

INSERT INTO exam VALUES ( '{5,6,7}');

Из этого можно ли получить результат, например следующий,

size

0

3
4b9b3361

Ответ 1

Как отмечали vyegorov, array_length сделает трюк. Или, если вы знаете, что массив 1-мерный (что вполне вероятно) и работает PostgreSQL 9.4 или выше, вы можете использовать cardinality:

SELECT cardinality(id) FROM example;

Ответ 3

Предполагая, что размерность массива всегда будет 1, я не чувствую себя комфортно, поэтому я выбрал следующее:

SELECT coalesce(array_length(id, 1), 0) as size FROM example;

Это было... по крайней мере, десять лет, но мы привыкли много делать с coalesce и это было довольно удобно. Может быть, я тянусь к этому из-за комфорта?

Ответ 4

Пришлось использовать array_upper в postgres 8.2.