如何在Postgres中选择数组的子集?

jbr*_*aud 16 arrays postgresql

假设我的一个postgres列中有一个数组:

> select array[1,2,3,4];
   array   
-----------
 {1,2,3,4} 
Run Code Online (Sandbox Code Playgroud)

一般来说,如何从该阵列中选择项目的子集?例如,如果我想从x索引中选择项目到y索引,我将如何获取该范围内的项目(xto y)?

我正在使用PostgreSQL 9.4.

mu *_*ort 29

精细手册:

8.15.3.访问数组
[...]
我们还可以访问数组或子数组的任意矩形切片.通过为一个或多个数组维度写下限:上限来表示数组切片.

例如:

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

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

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

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

因此,要从索引xy(包含)切片,您会说:

array_column[x:y]
Run Code Online (Sandbox Code Playgroud)