¿Hay alguna forma de encontrar el tamaño de una matriz?
Por ejemplo,
CREATE TABLE example (id integer[]) ;
INSERT INTO exam VALUES ( '{}');
INSERT INTO exam VALUES ( '{5,6,7}');
A partir de esto, ¿hay alguna posibilidad de obtener un resultado como el siguiente,
size
0
3
sql
arrays
postgresql
size
aabi
fuente
fuente

cardinalitydevuelve el número de todos los elementos de una matriz única o multidimensional. Entoncesselect cardinality(ARRAY[[1,2], [3,4]]);volvería4, mientrasselect array_length(ARRAY[[1,2], [3,4]], 1)que volvería2. Si está contando la primera dimensión,array_lengthes una apuesta más segura.texttipo, mientrasfunction array_length(text[]) does not exist;)nully no0mientrascardinalitydevuelve lo que esperaría. No tengo idea de lo que estaban pensando con esa lógica.Son documentos de lectura triviales :
SELECT array_length(id, 1) FROM example;fuente
array_length? No encontré esa información en los documentos.nully en3lugar de0y3para el ejemplo de OP. Definitivamente debería promover el uso decardinalityal aceptar una respuesta, ya que es más fácil de usar y menos inesperado (imagino que el uso del 99,999% de las matrices es unidimensional)Asumir que la dimensión de la matriz siempre será 1 no es algo con lo que me sienta cómodo, así que elegí lo siguiente:
SELECT coalesce(array_length(id, 1), 0) as size FROM example;Ha pasado ... al menos una década, pero solíamos hacer mucho con
coalesceél y fue bastante útil. ¿Quizás lo estoy buscando por comodidad?fuente
Tuve que usar array_upper en postgres 8.2.
fuente