2015-09-26 28 views
10

假設我有我的Postgres列的一個陣列:如何在Postgres中選擇一個數組的子集?

> select array[1,2,3,4]; 
    array 
----------- 
{1,2,3,4} 

如何選擇從陣列中的項目的一個子集,有什麼看法?例如,如果我想從x索引中選擇項目到y索引,我將如何獲取該範圍內的項目(xy)?

我正在使用PostgreSQL 9.4。

回答

18

fine manual

8.15.3。訪問陣列
[...]
我們還可以訪問數組或子陣列的任意矩形片。對於一個或多個陣列維度,通過寫入下界:上界來表示陣列片段。

例如:

=> select (array[1,2,3,4,5,6])[2:5]; 
    array 
----------- 
{2,3,4,5} 
(1 row) 

因此,要獲得來自指數x一個切片y(含),你會說:

array_column[x:y] 
+0

劑量它支持負的束縛?像[-2:-5] – TangMonk

+0

@Wooden取決於你期待'-2'做什麼:「下標賦值允許創建不使用基於一個下標的數組。例如,可以指定'myarray [-2 :7]'創建一個下標值從'-2'到'7'的數組。「。這是直接的文件。 –

相關問題