Ich bin total verwirrt darüber, was SQL-Array-Indizierung tut und was die Rückgabetypen der Indizierung []
sein sollte.So extrahieren Zeile aus Int [] [] als Int [] in Postgres
Ich habe einen 3,2-Array:
select ARRAY[
[1,1],
[2,2],
[3,3]];
--> {{1,1},{2,2},{3,3}}
(BTW, pgadmin3 sagt dies ist ein "Array integer []", nicht "Array integer [] []").
Lassen Sie uns sagen, dass ich die erste Zeile extrahieren möchten (Indizes beginnen bei 1 oder?):
-- A
select (ARRAY[
[1,1],
[2,2],
[3,3]])[1];
--> NULL
Huh? Warum nicht {1,1}
(vom Typ int[]
).
-- B
select (ARRAY[
[1,1],
[2,2],
[3,3]])[1][:];
--> {{1,1}}
... scheint echt. Aber:
-- C
select (ARRAY[
[1,1],
[2,2],
[3,3]])[1][:][1];
--> {}
Warum ist das anders als A?
Und wie kann ich eine Zeile aus einem int [] [] (1d Array) als int [] (1d Array) extrahieren.
Diese alle Zeilen bekommen. Was ist, wenn ich die zweite Reihe möchte? – user48956
Siehe die bearbeitete Antwort. – klin
Ein '{{...}}' ist ein 2D-Array. Ich möchte ein 1D-Array (die Zeile). Es macht einen Unterschied, denn arr [1] gibt NULL ist arr ist 2d, oder das Element, wenn es 1d ist. – user48956