PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL многомерни масиви

Postgres масив елементи са винаги основни елементи , т.е. скаларен стойности. Подмасивите не са "елементи" в Postgres. Срезовете на масива запазват оригиналните размери.

Можете или да извлечете базов елемент , което е стойност от типа данни на скаларния елемент.
Или можете да извлечете срез от масив , който запазва оригиналния тип данни на масива, както и оригиналните измерения на масива.

Вашата идея да извлечете подмасив като "елемент" би била в конфликт с това и просто не е приложена.

Ръководството може да е по-ясно в обяснението си. Но поне можем да намерим:

Вашият първи пример се опитва да посочи базов елемент, който не е намерен (ще ви трябват два индекса на масив в 2-D масив). Така Postgres връща NULL.
Вашият трети пример просто обвива получената NULL в нов масив.

За сплескване срез от масив (направете го 1-D масив) можете да unnest() и захранете получения набор към нов ARRAY конструктор . Или в корелирана подзаявка, или в LATERAL присъединете се (изисква pg 9.3+). Демонстриране и на двете:

SELECT s.col[2:2][2:3] AS slice_arr
     , x.lateral_arr
     , ARRAY(SELECT unnest(s.col[2:2][2:3])) AS corr_arr
FROM  (SELECT ARRAY[[1,2,3],[4,5,6]] AS col) s
     , LATERAL (SELECT ARRAY(SELECT * FROM unnest(s.col[2:2][2:3])) AS lateral_arr) x;

И не забравяйте да прочетете текущата версия на ръководството . препратките ви сочат към Postgres 9.1, но има вероятност всъщност да използвате Postgres 9.4.

Свързани:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конфигурирам pgAdmin III да отваря база данни по подразбиране и да избира възел на таблици при стартиране?

  2. Как да опресня JPA обекти, когато бекенд базата данни се промени асинхронно?

  3. Проверете за стойност с current_setting()

  4. Ако PostgreSQL count(*) винаги е бавен, как да се пагинират сложни заявки?

  5. Трябва ли да имам моята директория на Postgres точно до папката на моя проект? Ако е така, как?