假设我的一个postgres列中有一个数组:
> select array[1,2,3,4];
array
-----------
{1,2,3,4}
一般情况下,如何从该阵列中选择项目的子集?例如,如果我想从x
索引中选择y
索引中的项目,我该如何获取该范围内的项目(x
到y
)?< / p>
我正在使用PostgreSQL 9.4。
答案 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)
所以要从索引x
到y
(包括)获得切片,你要说:
array_column[x:y]