配列のサイズを見つける方法はありますか?
例えば、
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;
cardinality
単一または多次元配列内のすべての要素の数を返します。だから、select cardinality(ARRAY[[1,2], [3,4]]);
戻ってくる4
のに対し、select array_length(ARRAY[[1,2], [3,4]], 1)
返します2
。あなたが最初の次元を数えているならarray_length
、より安全な賭けです。
text
タイプがフィールドに保存されている配列でも機能しますが、function array_length(text[]) does not exist
;)
null
、評価されないの0
に対し、cardinality
期待どおりの値を返します。彼らがその論理で何を考えていたのか分かりません。
ドキュメントを読むのは簡単です:
SELECT array_length(id, 1) FROM example;
array_length
。ドキュメントでその情報が見つかりませんでした。
null
し、3
代わりに0
と3
のOPS例えば。間違いの利用促進すべきであるcardinality
、それは使いやすく、より少ない予想外だとして答えを受け入れるときに(配列の私は想像99.999%の使用は、単一の次元である)
postgres8.2ではarray_upperを使用する必要がありました。