PostgreSQL Documentation on arrays提供了一个使用[-1]
访问似乎是数组最后一个元素的示例;然而,SELECT arr[2:3];
产生{5,9}
,arr[2:-1]
产生{}
.
如何在PostgreSQL中获取数组的最后一个元素?
编辑:Windows,PostgreSQL v9.2.1
PostgreSQL Documentation on arrays提供了一个使用[-1]
访问似乎是数组最后一个元素的示例;然而,SELECT arr[2:3];
产生{5,9}
,arr[2:-1]
产生{}
.
如何在PostgreSQL中获取数组的最后一个元素?
编辑:Windows,PostgreSQL v9.2.1
我认为你误解了这个例子.PostgreSQL数组不必在1到n
that's just the default之间建立索引:
默认情况下,PostgreSQL对数组使用基于一的编号约定,即n个元素的数组以
array[1]
开头,以array[n]
结尾.
您看到的示例如下:
SELECT f1[1][-2][3] AS e1, f1[1][-1][5] AS e2
FROM (SELECT '[1:1][-2:-1][3:5]={{{1,2,3},{4,5,6}}}'::int[] AS f1) AS ss;
但这些负数并不像在Perl等语言中那样从数组末尾进行索引.在FROM (SELECT ...
部分中,他们指定了起始索引和结束索引,因此f1[1][-1][5]
中的-1只是一个普通的旧索引.考虑这array_dims
个结果:
=> SELECT array_dims('[1:1][-2:-1][3:5]={{{1,2,3},{4,5,6}}}'::int[]);
array_dims
-------------------
[1:1][-2:-1][3:5]
如果您使用的是默认的基于1的数组,那么您可以使用简单的arr[array_length(arr, 1)]
获得最后一个元素.如果你没有使用默认的[1:n]
数组,那么你将不得不使用array_lower
和array_upper
来获得第一个和最后一个元素;或者,根据具体情况,您可能可以使用unnest
解包数组,然后将数组作为行集使用.