Array_Upper liefert falsche Werte

Hi,

ic benötige für ein Programm die Dimensionen eines zweidimensionalen Arrays bin aber über die Ausgbe etwas verwirrt.
Die Spalte mit dem Title “neighbours” hat momentan drei Einträge der Form:

"{{002},{2.83}}"
"{{001,003},{2.83,8.0}}"
"{{002},{8.0}}"

Bei

select array_upper(neighbours, 1) from knots;

erhalte ich als Ergebnis:

"2"
"2"
"2"

Bei

select array_upper(neighbours, 2) from knots;

hingegen:

"1"
"2"
"1"

Meine Frage ist nun, warum die erste Anfrage nicht auch, wie von mir erwartet, (1,2,1) zurückliefert.


Gruß,
Simon

Weil in der ersten Dimension 2 Einträge da sind.
Kleine Demo:

[php]
test=*# select id, i, array_lower(i,1) as lower_1, array_upper(i,1) as upper_1, array_lower(i,2) as lower_2,array_upper(i,2) as upper_2 from i_array;
id | i | lower_1 | upper_1 | lower_2 | upper_2
----±------------------±--------±--------±--------±--------
5 | {{1},{1}} | 1 | 2 | 1 | 1
6 | {{2},{2},{2}} | 1 | 3 | 1 | 1
7 | {{3},{3},{3},{3}} | 1 | 4 | 1 | 1
8 | {{{1},{1}}} | 1 | 1 | 1 | 2
(4 rows)
[/php]

Ja, das mit den Arrays mag verwirrend erscheinen, ich nutze das auch nicht…

Andreas

Danke für die Antwort.

Ich bin jetzt dazu übergegangen, für den Inhalt der Arrays einfach noch eine Tabelle anzulegen. Finde ich zwar weniger elegant, dafür weiß ich wenigstens genau, daß es so funktioniert.

Möglicherweise ist dieser Weg aber eleganter, weil es dem Prinzip einer relationalen DB besser entspricht. Ich weiß ja nicht genau, was Du da konkret machst, aber vermulich wird der Weg über eine weitere Tabelle spätestens dann, wenn Du da richtig viele Daten hast, sich als der bessere erweisen.

Andreas