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

标签 arrays postgresql

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

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

通常如何从该数组中选择项目的子集?例如,如果我想从 x 索引到 y 索引中选择项目,我将如何获取该范围内的项目 (xy)?

我正在使用 PostgreSQL 9.4。

最佳答案

来自fine manual :

8.15.3. Accessing Arrays
[...]
We can also access arbitrary rectangular slices of an array, or subarrays. An array slice is denoted by writing lower-bound:upper-bound for one or more array dimensions.
[...]
It is possible to omit the lower-bound and/or upper-bound of a slice specifier; the missing bound is replaced by the lower or upper limit of the array's subscripts.

例如:

=> 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]

关于arrays - 如何在 Postgres 中选择数组的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32793871/

相关文章:

javascript - 将 2 个相关数组映射在一起

c - 有没有办法为数组重新分配内存以允许在开头添加附加值?

php - 如何集中重复使用但每次使用不同分区的复杂窗口查询

sql - Postgres根据时间戳选择不同的

postgresql - 在 PostgreSQL 中使用哪种数据类型来引用 SERIAL 数据类型?

javascript - 查找类的所有实例,创建数据属性数组

java - 如何使用从 Java 中的方法返回的数组

javascript - Array.push 在 forEach 循环中的 for 循环中不起作用。Javascript

python - 同一个表中有很多时间序列: how to generate JSON string in correct format

sql - 如何将多个一对多结果与 Postgres json_agg 结合起来?