PostgreSQL Documentation on arrays提供了一个使用[-1]来访问似乎是数组最后一个元素的示例;但是当SELECT arr [2:3];产生{5,9},arr [2:-1]得到{}.
编辑:Windows,Postgresql v9.2.1
我认为你误解了这个例子. Postgresql数组不必从1到n,that’s just the default索引:
By default Postgresql uses a one-based numbering convention for arrays,that is,an array of n elements starts with
array[1]
and ends witharray[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,6}}}'::int[]); array_dims ------------------- [1:1][-2:-1][3:5]
如果您使用默认的基于1的数组,那么您可以使用简单的arr [array_length(arr,1)]获取最后一个元素.如果您没有使用默认的[1:n]数组,那么您将不得不使用array_lower
和array_upper
来获取第一个和最后一个元素;或者,根据具体情况,您可以使用unnest
解压缩数组,然后使用数组作为行集.
原文地址:https://www.jb51.cc/postgresql/192227.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。