Arrays 数组_上限和数组_长度之间有功能上的区别吗?

Arrays 数组_上限和数组_长度之间有功能上的区别吗?,arrays,postgresql,Arrays,Postgresql,这两个数组函数上的postgres文档非常弱 我尝试了两个函数的几种不同方式,它们似乎返回相同的结果 SELECT array_length(array[[1, 2], [3, 4], [5, 6]], 1); SELECT array_upper(array[[1, 2], [3, 4], [5, 6]], 1); SELECT array_length(array[[1, 2], [3, 4], [5, 6]], 2); SELECT array_upper(array[[1, 2], [

这两个数组函数上的postgres文档非常弱

我尝试了两个函数的几种不同方式,它们似乎返回相同的结果

SELECT array_length(array[[1, 2], [3, 4], [5, 6]], 1);
SELECT array_upper(array[[1, 2], [3, 4], [5, 6]], 1);

SELECT array_length(array[[1, 2], [3, 4], [5, 6]], 2);
SELECT array_upper(array[[1, 2], [3, 4], [5, 6]], 2);

是的,有区别。默认情况下,PostgreSQL数组下标从1开始,但:

默认情况下,PostgreSQL对数组使用基于一的编号约定,即
n
元素数组以
array[1]
开始,以
array[n]
结束
[…]
下标赋值允许创建不使用基于一的下标的数组。例如,可以分配给
myarray[-2:7]
以创建一个下标值从
-2到7的数组
[…]
默认情况下,数组维度的下限索引值设置为1。要使用其他下限表示数组,可以在写入数组内容之前显式指定数组下标范围


通常,您需要使用,而不是假设数组将从
1
开始,以
array\u长度(a,n)

结束,谢谢-这很好。因此,这条语句似乎是正确的:
array\u length
返回数组元素的绝对值,而不管数组的开始/结束值是多少?
array\u length
返回“请求的数组维度的长度”,因此它不关心数组的开始和结束位置,只关心它有多少个条目。