表 9.51显示了可以用于数组类型的专用的操作符。 除此之外,表 9.1中所示的常用比较运算符也适用于数组。 比较操作符逐个元素的比较数组内容,使用默认的元素数据类型的B-tree比较函数,并根据第一个差值进行排序。 多维数组的元素按照行序进行访问(最后的下标变化最快)。 如果两个数组的内容相同但维数不等,那么维度信息中的第一个不同将决定排序顺序(这是对PostgreSQL 8.2 之前版本的修改: 老版本认为内容相同的两个数组相等,即使它们的维数或下标范围并不相同)。
表 9.51. 数组操作符
操作符 描述 例子 |
---|
第一个数组是否包含第二个数组,也就是说,出现在第二个数组中的每个元素是否等于第一个数组中的某个元素?
(重复值不需要特殊处理,因此
|
第一个数组包含在第二个数组中么?
|
这些数组有重叠么,也就是说,它们有共同的元素么?
|
连接两个数组。连接空(null)或空数组是一个无操作(no-op);否则,数组必须具有相同的维度数(如第一个示例所示),或者维度数相差一个(如第二个示例所示)。
|
将元素连接到数组的前面(数组必须为空或一维的[one-dimensional])。
|
将元素连接到数组的末尾(数组必须为空或一维的[one-dimensional])。
|
参阅第 8.15 节获取有关数组操作符行为的更多细节。有关哪些操作符支持被索引的操作,请参阅第 11.2 节。
表 9.52展示了可以用于数组类型的函数。 参阅第 8.15 节获取更多信息以及使用这些函数的例子。
表 9.52. 数组函数
函数 描述 例子 |
---|
向一个数组的末端追加一个元素 (等同于
|
连接两个数组(等同于
|
返回数组维度的文本表示形式。
|
返回一个包含给定值的拷贝的数组,其维数与第二个参数指定的长度相同。
可选的第三个参数提供每个维度的下界值(默认为全部为
|
返回请求的数组维度的长度。
|
返回请求的数组维度的下界。
|
返回数组的维度数。
|
返回阵列中第二个参数中第一次发生的下标,如果它不存在,则返回
|
返回作为第一个参数的数组中第二个参数所有出现的下标的数组。
数组必须是一维的。使用
|
在数组的开头添加一个元素(等同于
|
从数组中移除与给定值相等的所有元素。数组必须是一维的。使用
|
将等于第二个参数的每个数组元素替换为第三个参数。
|
将每个数组元素转换为它的文本表现形式,并连接由
|
返回请求的数组维度的上界。
|
返回数组中元素的总数,如果数组为空则返回0。
|
在出现
|
将数组展开为一组行。
1 2
|
将多个数组(可能是不同的数据类型)展开为一组行。
如果数组的长度不完全相同,那么较短的数组将用
a | b ---+----- 1 | foo 2 | bar | baz
|
string_to_array
的行为中有两点与PostgreSQL 9.1之前的版本不同。
首先,当输入串的长度为零时,它将返回一个空(无元素)数组而不是 NULL
。
其次,如果定界符串为 NULL
,该函数会将输入划分成独立字符,而不是像以前那样返回 NULL
。
也可参见第 9.21 节了解用于数组的聚集函数array_agg
。