Senhores,

Como faço para pegar um subarray unidimensional de um array multidimensional?
Vejam este ex.:

bdteste=# CREATE TEMP TABLE bar(
bdteste(#   id   int,
bdteste(#   ar   int[3][4]
bdteste(# );
CREATE TABLE
bdteste=#
bdteste=# INSERT INTO bar VALUES (1,
'{{111,112,113,114},{121,122,123,124},{131,132,133,134}}'),
bdteste-#                        (2,
'{{211,212,213,124},{221,222,223,224},{231,232,233,234}}'),
bdteste-#                        (3,
'{{131,312,313,314},{321,322,323,324},{331,332,333,334}}');
INSERT 0 3

bdteste=# SELECT * FROM bar;
 id |                           ar
----+---------------------------------------------------------
  1 | {{111,112,113,114},{121,122,123,124},{131,132,133,134}}
  2 | {{211,212,213,124},{221,222,223,224},{231,232,233,234}}
  3 | {{131,312,313,314},{321,322,323,324},{331,332,333,334}}
(3 registros)

bdteste=# SELECT ar[1] FROM bar WHERE id = 1;
 ar
----

(1 registro)
****===> Aqui eu esperava obter o array {111,112,113,114}

bdteste=# SELECT ar[2][4] FROM bar WHERE id = 1;
 ar
-----
 124
(1 registro)
***===> Um elemento está ok.

bdteste=# SELECT ar[2:2][1:4] FROM bar WHERE id = 1;
         ar
---------------------
 {{121,122,123,124}}
(1 registro)
***===> Reparem que não é um array unidimensional, eu esperava
{121,122,123,124}.

bdteste=# SELECT ar[2:2][4:4] FROM bar WHERE id = 1;
   ar
---------
 {{124}}
(1 registro)
***===> Ops!

bdteste=# SELECT array_dims((SELECT ar[2:2][1:4] FROM bar WHERE id = 1));
 array_dims
------------
 [1:1][1:4]
(1 registro)

bdteste=# SELECT array_upper((SELECT ar[2:2][1:4] FROM bar WHERE id = 1), 1);
 array_upper
-------------
           1
(1 registro)

bdteste=# SELECT array_upper((SELECT ar[2:2][1:4] FROM bar WHERE id = 1), 2);
 array_upper
-------------
           4
(1 registro)

Tem como obter o array unidimensional (como se fosse uma linha da
tabela) ou é melhor eu repensar a solução?

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a