Table 9.56 展示了可用于数组类型的专用操作符。 除此之外, Table 9.1 中展示的常规比较操作符也可用于数组。 比较操作符会使用元素数据类型的默认 B-tree 比较函数逐个元素地比较数组内容, 并根据第一个差异进行排序。 在多维数组中, 元素按行主序 (最后一个下标变化最快) 被访问。 如果两个数组的内容相等但维度不同, 那么维度信息中的第一个差异决定排序顺序。
Table 9.56. 数组操作符
操作符 说明 示例 |
|---|
第一个数组是否包含第二个数组,
也就是说,
第二个数组中出现的每个元素是否等于第一个数组的某个元素?
(重复项不会被特殊对待,
因此
|
第一个数组是否被包含在第二个之中?
|
这些数组是否重叠, 即是否有任何公共元素?
|
连接这两个数组。 连接一个空数组或空操作 (no-op); 否则这些数组必须具有相同的维数 (如第一个例子所示), 或者维数相差一 (如第二个例子所示)。 如果这些数组的元素类型不完全相同, 它们会被强制转换为一种公共类型 (参见 Section 10.5)。
|
把一个元素连接到一个数组的前面 (该数组必须是空的或一维的)。
|
把一个元素连接到一个数组的末尾 (该数组必须是空的或一维的)。
|
有关数组操作符行为的更多细节, 请参见 Section 8.15。 有关哪些操作符支持索引操作的更多细节, 请参见 Section 11.2。
Table 9.57 展示了可用于数组类型的函数。 有关这些函数使用的更多信息与例子, 请参见 Section 8.15。
Table 9.57. 数组函数
函数 说明 示例 |
|---|
把一个元素追加到数组的末尾
(等同于
|
连接两个数组
(等同于
|
返回数组维度的文本表示。
|
返回一个用给定值的副本填充的数组,
其维度由第二个参数指定的长度决定。
可选的第三个参数为每个维度提供下界值
(默认全为
|
返回被请求的数组维度的长度。 (对于空的或缺失的数组维度, 产生 NULL 而非 0。)
|
返回被请求的数组维度的下界。
|
返回数组的维数。
|
返回第二个参数在数组中第一次出现的下标,
如果不存在则返回
|
返回一个由所有出现的下标组成的数组,
这些出现是第二个参数在第一个参数给定的数组中的出现。
数组必须是一维的。
比较使用
|
把一个元素置于一个数组的开头
(等同于
|
从数组中移除所有等于给定值的元素。
数组必须是一维的。
比较使用
|
把数组中每个等于第二个参数的元素替换为第三个参数。
|
反转数组的第一维。
|
返回一个由从
|
随机打乱数组的第一维。
|
对数组的第一维进行排序。
排序顺序由数组元素类型的默认排序顺序决定;
不过,
如果元素类型是可排序的,
则可以通过向
如果
|
把每个数组元素转换为它的文本表示,
并用
|
返回被请求的数组维度的上界。
|
返回数组中元素的总数, 如果数组为空则返回 0。
|
通过移除最后
|
把一个数组展开成一组行。 数组的元素按存储顺序读出。
1 2
foo bar baz quux
|
把多个数组
(可能是不同数据类型的)
展开成一组行。
如果这些数组的长度不完全相同,
较短的会用
a | b ---+----- 1 | foo 2 | bar | baz
|
关于与数组一起使用的聚集函数
array_agg,
另请参见
Section 9.21。