Czy istnieje sposób na znalezienie rozmiaru tablicy?
Na przykład,
CREATE TABLE example (id integer[]) ;
INSERT INTO exam VALUES ( '{}');
INSERT INTO exam VALUES ( '{5,6,7}');
Czy na tej podstawie można uzyskać taki wynik,
size
0
3
sql
arrays
postgresql
size
aabi
źródło
źródło
cardinality
zwraca liczbę wszystkich elementów w jednej lub wielowymiarowej tablicy. Więcselect cardinality(ARRAY[[1,2], [3,4]]);
wróci4
, podczas gdyselect array_length(ARRAY[[1,2], [3,4]], 1)
wróci2
. Jeśli liczysz pierwszy wymiar,array_length
jest to bezpieczniejszy zakład.text
typem, whilefunction array_length(text[]) does not exist
;)null
, a nie0
podczascardinality
powrotów, czego można oczekiwać. Nie mam pojęcia, co myśleli, kierując się tą logiką.To trywialne czytanie dokumentów :
SELECT array_length(id, 1) FROM example;
źródło
array_length
. Nie znalazłem tych informacji w dokumentach.null
i3
zamiast0
i3
dla przykładu PO. Zdecydowanie powinien promować używaniecardinality
przy akceptowaniu odpowiedzi, ponieważ jest łatwiejszy w użyciu i mniej nieoczekiwany (wyobrażam sobie, że 99,999% tablic jest jednowymiarowych)Zakładanie, że wymiar tablicy zawsze będzie wynosił 1, nie jest czymś, z czym czuję się komfortowo, więc zdecydowałem się na następujące:
SELECT coalesce(array_length(id, 1), 0) as size FROM example;
Minęło ... co najmniej dekadę, ale dużo z
coalesce
tym robiliśmy i było to całkiem przydatne. Może sięgam po to z wygody?źródło
Musiałem użyć array_upper w postgres 8.2.
źródło