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

时间:2015-09-26 05:09:35

标签: arrays postgresql

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

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

一般情况下,如何从该阵列中选择项目的子集?例如,如果我想从x索引中选择y索引中的项目,我该如何获取该范围内的项目(xy)?< / p>

我正在使用PostgreSQL 9.4。

1 个答案:

答案 0 :(得分:26)

来自fine manual

  

<强> 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)

所以要从索引xy(包括)获得切片,你要说:

array_column[x:y]