Arrays PostgreSQL:检索多个数组元素

Arrays PostgreSQL:检索多个数组元素,arrays,postgresql,Arrays,Postgresql,假设我们有这样一个查询: SELECT regexp_split_to_array('foo,bar', ','); 结果: +-----------------------+ | regexp_split_to_array | +-----------------------+ | {foo,bar} | +-----------------------+ (1 row) 要访问数组的单个元素,我们可以使用以下代码: SELECT (regexp_split_to_

假设我们有这样一个查询:

SELECT regexp_split_to_array('foo,bar', ',');
结果:

+-----------------------+
| regexp_split_to_array |
+-----------------------+
| {foo,bar}             |
+-----------------------+
(1 row)
要访问数组的单个元素,我们可以使用以下代码:

SELECT (regexp_split_to_array('foo,bar', ','))[1];
将返回:

+-----------------------+
| regexp_split_to_array |
+-----------------------+
| foo                   |
+-----------------------+
(1 row)
或者使用如下切片:

SELECT (regexp_split_to_array('foo,bar', ','))[2:];
结果:

+-----------------------+
| regexp_split_to_array |
+-----------------------+
| {bar}                 |
+-----------------------+
(1 row)
但是,当我尝试同时访问2个元素时,例如:

SELECT (regexp_split_to_array('foo,bar', ','))[1,2];

或任何其他语法,我收到一个错误:

ERROR:  syntax error at or near ","

是否可以在PostgreSQL中检索一个数组中两个不同且不相邻的元素?

通过从数组中选择来提取多个元素应该意味着可以将它们作为多列返回,或者将所有这些元素作为单个数组的一部分返回

这将返回一列作为两个元素的数组

knayak=# select ARRAY[arr[1],arr[2]] FROM regexp_split_to_array('foo,bar', ',') as arr;
   array
-----------
 {foo,bar}
(1 row)
…这只是将两个元素作为列提供给您

knayak=# select arr[1],arr[2] FROM regexp_split_to_array('foo,bar', ',') as arr;
 arr | arr
-----+-----
 foo | bar
(1 row)

数组索引器中的冒号“:”允许您从到访问多个元素

select (array[1,2,3,4,5])[2:4]
返回

{2,3,4}
这在上面的示例中是可行的,但如果1和2不是相邻的,则不行。如果是这样的话,@KaushikNayak的建议是我唯一能想到的方法

以您的例子:

SELECT (regexp_split_to_array('foo,bar', ','))[1:2]

谢谢,这正是我要找的。@Alexound:不客气。如果你找到了答案,请接受它。被接受的答案增加了它的价值,并帮助其他人寻求解决同一问题的方法。
SELECT (regexp_split_to_array('foo,bar', ','))[1:2]