表 9.54 显示了数组类型可用的专门运算符。除了那些运算符,表 9.1 中所示的常用比较运算符也可用于数组。比较运算符会按元素逐个比较数组内容,对元素数据类型使用默认的 B-Tree 比较函数,并根据第一个差异进行排序。在多维数组中,元素的访问顺序为行优先顺序(最后下标变化最快)。如果两个数组的内容相等,但维度不同,则维度信息中的第一个差异将决定排序顺序。
表 9.54 数组运算符
运算符 描述 示例 |
---|
第一个数组是否包含第二个数组,即第二个数组中出现的每个元素是否都等于第一个数组的某个元素?(重复项没有特殊处理,因此
|
第一个数组是否包含在第二个数组中?
|
数组是否有重叠,即是否有任何元素相同?
|
连接两个数组。连接 null 或空数组是无操作;否则数组必须具有相同数量的维度(如第一个示例所示)或维度数量相差 1(如第二个示例所示)。如果数组的元素类型不同,则会强制转换为公共类型(请参阅第 10.5 节)。
|
将元素连接到数组的开头(数组必须为空或一维)。
|
将元素连接到数组的末尾(数组必须为空或一维)。
|
有关数组运算符行为的更多详情,请参见第 8.15 节。有关支持索引操作的更多详情,请参见第 11.2 节。
表 9.55显示了可用于数组类型的函数。有关这些函数的使用信息和示例,请参阅第 8.15 节。
表 9.55. 数组函数
函数 描述 示例 |
---|
将元素附加到数组末尾(与
|
连接两个数组(与
|
返回数组维度文本表示形式。
|
返回填充了给定值副本的数组,它的维度是由第二个参数指定的长度。可选的第三个参数为每个维度提供了下限值(默认为所有
|
返回所请求数组维度的长度。(对于维度为空或缺失的数组,会生成 NULL 而不是 0。)
|
返回所请求的数组维度的下限。
|
返回数组的维度数量。
|
返回数组中第二个参数的第一个出现的下标,如果不存在,则返回
|
返回数组中第一个参数所给出的数组中第二个参数的所有出现次数的下标数组。数组必须是一维的。比较是使用
|
把元素前置到数组的开头(和
|
从数组中删除所有等于给定值的元素。数组必须是一维的。比较使用
|
用第三个参数替换数组中等于第二个参数的每个数组元素。
|
从
|
随机打乱数组的第一个维度。
|
将每个数组元素转换为其文本表示形式,并使用
|
返回所需数组维度的上限。
|
返回数组中的元素总数,如果数组为空,则返回 0。
|
通过移除最后的
|
将数组展开为一组行。按存储顺序读出数组元素。
1 2
foo bar baz quux |
将多个数组(可能是不同的数据类型)展开为一组行。如果数组长度不相同,则用
a | b ---+----- 1 | foo 2 | bar | baz |
另请参阅 第 9.21 节 中关于聚合函数 array_agg
用法的信息,以用于数组。