2012-06-25 31 views
25

¿Hay alguna manera de encontrar el tamaño de una matriz?Cómo encontrar el tamaño de una matriz en postgresql

por ejemplo,

CREATE TABLE example (id integer[]) ; 

INSERT INTO exam VALUES ('{}'); 

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

partir de esto, es que hay alguna posibilidad de conseguir un resultado como el siguiente,

size 

0 

3 

Respuesta

34

Es trivial reading docs:

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

¿Sabes lo que es el segundo parámetro de la función 'array_length'. No encontré esa información en documentos. – suzanshakya

+10

@suzanshakya, la longitud de la matriz solicitada _dimension_ ツ – vyegorov

27

Como vyegorov mencionó, array_length hará el truco. O si se sabe que la matriz es de 1 dimensión (que es probable) y está ejecutando PostgreSQL 9.4 o superior, puede utilizar cardinality:

SELECT cardinality(id) FROM example; 
+5

Si alguien puede mencionar la gran diferencia en el uso de array_length y cardinality que sería genial –

+2

'cardinality' devuelve el número de todos los elementos en una matriz única o multidimensional. Así que 'select cardinality (ARRAY [[1,2], [3,4]]);' devolvería '4', mientras que' seleccionar array_length (ARRAY [[1,2], [3,4]], 1) 'devolvería' 2'. Si está contando la primera dimensión, 'array_length' es una apuesta más segura. – Roshambo

Cuestiones relacionadas