sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur får man fram dimensionaliteten för en ARRAY-kolumn?

Till att börja med, dimensionaliteten hos en array återspeglas inte i datatypen i Postgres. Syntaxen integer[][] tolereras, men det är egentligen bara integer[] internt.
Läs manualen här.

Det betyder att dimensioner kan variera inom samma datatyp (samma tabellkolumn).

För att få faktiska dimensioner för en viss arrays värde :

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

Eller för att bara få antalet dimensioner:

SELECT array_ndims(my_arr);  -- 2

Det finns fler array-funktioner för liknande behov. Se tabell över arrayfunktioner i manualen.

Relaterat:

Om du behöver tvinga fram särskilda dimensioner i en kolumn, lägg till en CHECK begränsning . Så här tvingar du fram tvådimensionella arrayer:

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


  1. Finns det ANY_VALUE-kapacitet för mysql 5.6?

  2. MySQL JSON slå samman två json-objekts primärnyckel i JSON-dokument

  3. Laravel tillhör att kasta odefinierat fel

  4. Hur man skriver en SQL-fråga med dynamisk LIMIT