PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie erhält man die Dimensionalität einer ARRAY-Spalte?

Zunächst einmal spiegelt sich die Dimensionalität eines Arrays nicht im Datentyp in Postgres wider. Die Syntax integer[][] wird toleriert, aber es ist wirklich nur integer[] intern.
Lesen Sie das Handbuch hier.

Das bedeutet, dass Dimensionen innerhalb des gleichen Datentyps (der gleichen Tabellenspalte) variieren können.

Um die tatsächlichen Dimensionen eines bestimmten Array-Werts zu erhalten :

SELECT array_dims(my_arr);  -- [1:2][1:3]

Oder um nur die Anzahl der Dimensionen zu erhalten:

SELECT array_ndims(my_arr);  -- 2

Es gibt weitere Array-Funktionen für ähnliche Anforderungen. Siehe Tabelle der Array-Funktionen im Handbuch.

Verwandte:

Wenn Sie bestimmte Dimensionen in einer Spalte erzwingen müssen, fügen Sie ein CHECK Einschränkung . So erzwingen Sie zweidimensionale Arrays:

ALTER TABLE tbl ADD CONSTRAINT tbl_arr_col_must_have_2_dims
CHECK (array_ndims(arr_col) = 2);