2012-06-25 18 views
25

C'è un modo per trovare una dimensione di una matrice?Come trovare la dimensione di una matrice in postgresql

per esempio,

CREATE TABLE example (id integer[]) ; 

INSERT INTO exam VALUES ('{}'); 

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

Da questo, c'è qualche possibilità di ottenere un risultato come seguire,

size 

0 

3 

risposta

34

E 'banale reading docs:

SELECT array_length(id, 1) FROM example; 
+5

Sai qual è il secondo parametro della funzione 'array_length'. Non ho trovato queste informazioni nei documenti. – suzanshakya

+10

@suzanshakya, la lunghezza dell'array richiesto _dimension_ ツ – vyegorov

27

Come vyegorov accennato, array_length farà il trucco. Oppure, se si sa che l'array è 1-dimensionale (che è probabile) e si esegue PostgreSQL 9.4 o superiore, è possibile utilizzare cardinality:

SELECT cardinality(id) FROM example; 
+5

Se qualcuno può menzionare la principale differenza nell'uso di array_length e cardinalità che sarebbe ottima –

+2

'cardinality' restituisce il numero di tutti gli elementi in una matrice singola o multidimensionale. Quindi 'seleziona la cardinalità (ARRAY [[1,2], [3,4]]);' restituisce '4', mentre' seleziona array_length (ARRAY [[1,2], [3,4]], 1) 'restituire' 2'. Se stai contando la prima dimensione, 'array_length' è una scommessa più sicura. – Roshambo

Problemi correlati