Gibt es eine Möglichkeit, die Größe eines Arrays zu ermitteln?
Beispielsweise,
CREATE TABLE example (id integer[]) ;
INSERT INTO exam VALUES ( '{}');
INSERT INTO exam VALUES ( '{5,6,7}');
Gibt es daraus Möglichkeiten, ein Ergebnis wie das folgende zu erhalten:
size
0
3
sql
arrays
postgresql
size
aabi
quelle
quelle
cardinality
Gibt die Anzahl aller Elemente in einem ein- oder mehrdimensionalen Array zurück. Soselect cardinality(ARRAY[[1,2], [3,4]]);
würde zurückkehren4
, währendselect array_length(ARRAY[[1,2], [3,4]], 1)
zurückkehren würde2
. Wenn Sie die erste Dimension zählen,array_length
ist dies eine sicherere Wette.text
Typ gespeichert ist , währendfunction array_length(text[]) does not exist
;)null
und nicht,0
während dascardinality
zurückgegeben wird, was Sie erwarten würden. Keine Ahnung, was sie mit dieser Logik dachten.Es ist trivial , Dokumente zu lesen :
quelle
array_length
. Ich habe diese Informationen nicht in den Dokumenten gefunden.null
und3
anstelle von0
und3
für das OP-Beispiel. Sollte auf jeden Fall die Verwendung fördern,cardinality
wenn eine Antwort akzeptiert wird, da sie einfacher zu verwenden und weniger unerwartet ist (ich stelle mir vor, dass 99,999% der Arrays eindimensional sind)Angenommen, die Dimension des Arrays ist immer 1, ist nichts, mit dem ich mich wohl fühle, also habe ich Folgendes gewählt:
Es ist ... mindestens ein Jahrzehnt her, aber wir haben viel damit gemacht
coalesce
und es war ziemlich praktisch. Vielleicht greife ich aus Bequemlichkeit danach?quelle
Musste array_upper in postgres 8.2 verwenden.
quelle