Ответ 1
Как отмечали vyegorov, array_length
сделает трюк. Или, если вы знаете, что массив 1-мерный (что вполне вероятно) и работает PostgreSQL 9.4 или выше, вы можете использовать cardinality
:
SELECT cardinality(id) FROM example;
Есть ли способ найти размер массива?
Например,
CREATE TABLE example (id integer[]) ;
INSERT INTO exam VALUES ( '{}');
INSERT INTO exam VALUES ( '{5,6,7}');
Из этого можно ли получить результат, например следующий,
size
0
3
Как отмечали vyegorov, array_length
сделает трюк. Или, если вы знаете, что массив 1-мерный (что вполне вероятно) и работает PostgreSQL 9.4 или выше, вы можете использовать cardinality
:
SELECT cardinality(id) FROM example;
Это тривиальный чтение документов:
SELECT array_length(id, 1) FROM example;
Предполагая, что размерность массива всегда будет 1, я не чувствую себя комфортно, поэтому я выбрал следующее:
SELECT coalesce(array_length(id, 1), 0) as size FROM example;
Это было... по крайней мере, десять лет, но мы привыкли много делать с coalesce
и это было довольно удобно. Может быть, я тянусь к этому из-за комфорта?
Пришлось использовать array_upper в postgres 8.2.