# 9.19.数组函数和运算符
表9.51显示可用于数组类型的专用运算符。除此之外,中还显示了常用的比较运算符表9.1可用于阵列。比较运算符使用元素数据类型的默认B树比较函数逐个元素比较数组内容,并根据第一个差异进行排序。在多维数组中,元素按行的主要顺序访问(最后一个下标变化最快)。如果两个数组的内容相等,但维度不同,那么维度信息中的第一个差异将决定排序顺序。
表9.51.数组运算符
操作人员 描述 例子 |
---|
任意数组 @> 任意数组 →布尔值 第一个数组是否包含第二个数组,也就是说,第二个数组中出现的每个元素是否等于第一个数组中的某个元素?(复制品没有经过特殊处理,因此 数组[1] 和数组[1,1] 每个都被认为包含另一个。)数组[1,4,3]@>数组[3,1,3] →t |
任意数组 <@ 任意数组 →布尔值 第一个数组是否包含第二个数组? ARRAY[2,2,7] <@ ARRAY[1,7,4,2,6] →t |
anyarray && anyarray →boolean Do the arrays overlap, that is, have any elements in common? ARRAY[1,4,3] && ARRAY[2,1] →t |
anycompatiblearray || anycompatiblearray →anycompatiblearray Concatenates the two arrays. Concatenating a null or empty array is a no-op; otherwise the arrays must have the same number of dimensions (as illustrated by the first example) or differ in number of dimensions by one (as illustrated by the second). If the arrays are not of identical element types, they will be coerced to a common type (seeSection 10.5). ARRAY[1,2,3] || ARRAY[4,5,6,7] →{1,2,3,4,5,6,7} ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9.9]] → {{1,2,3},{4,5,6},{7,8,9.9} } |
anycompatible || anycompatiblearray →anycompatiblearray Concatenates an element onto the front of an array (which must be empty or one-dimensional). 3 || ARRAY[4,5,6] →{3,4,5,6} |
anycompatiblearray || anycompatible →anycompatiblearray Concatenates an element onto the end of an array (which must be empty or one-dimensional). ARRAY[4,5,6] || 7 →{4,5,6,7} |
SeeSection 8.15for more details about array operator behavior. SeeSection 11.2for more details about which operators support indexed operations.
Table 9.52shows the functions available for use with array types. SeeSection 8.15for more information and examples of the use of these functions.
Table 9.52. Array Functions
Function 描述 例子 | ||||
---|---|---|---|---|
数组_追加 ( 随便什么 , 任何兼容的 ) → 随便什么 将元素追加到数组的末尾(与 随便什么 || 任何兼容的 接线员)。数组_追加(数组[1,2],3) → {1,2,3} | ||||
猫咪 ( 随便什么 , 随便什么 ) → 随便什么 连接两个数组(与 随便什么 || 随便什么 接线员)。数组_cat(数组[1,2,3],数组[4,5]) → {1,2,3,4,5} | ||||
阵列亮度 ( 任意数组 ) → 文本 返回数组维度的文本表示形式。 数组_dims(数组[[1,2,3],[4,5,6]) → [1:2][1:3] | ||||
数组填充 ( 任何元素 , 整数[] [, 整数[] ] ) → 任意数组 返回一个由给定值的副本填充的数组,其维数为第二个参数指定的长度。可选的第三个参数为每个维度提供下限值(默认为all) 1. ).数组填充(11,数组[2,3]) → { {11,11,11}, {11,11,11}} 数组填充(7,数组[3],数组[2]) → [2:4]={7,7,7} | ||||
数组长度 ( 任意数组 , 整数 ) → 整数 返回请求的数组维度的长度。 数组长度(数组[1,2,3],1) → 3. | ||||
数组_较低 ( 任意数组 , 整数 ) → 整数 返回请求的数组维度的下限。 数组_lower('[0:2]={1,2,3}'::整数[],1) → 0 | ||||
阵列ndims ( 任意数组 ) → 整数 返回数组的维数。 数组_ndims(数组[[1,2,3],[4,5,6]) → 2. | ||||
阵列位置 ( 随便什么 , 任何兼容的 [, 整数 ] ) → 整数 返回数组中第二个参数第一次出现的下标,或 无效的 如果它不存在。如果给出了第三个参数,搜索将从该下标开始。数组必须是一维的。比较是使用与…没有区别 语义,因此可以搜索无效的 .数组位置(数组['sun','mon','tue','wed','thu','fri','sat','mon') → 2. | ||||
阵列位置 ( 随便什么 , 任何兼容的 ) → 整数[] 返回作为第一个参数给定的数组中第二个参数的所有匹配项的下标数组。数组必须是一维的。比较是使用 与…没有区别 语义,因此可以搜索无效的 . 无效的 仅当数组为无效的 ; 如果在数组中找不到该值,则返回一个空数组。数组位置(数组['A','A','B','A'],'A') → {1,2,4} | ||||
数组_前置 ( 任何兼容的 , 随便什么 ) → 随便什么 将元素前置到数组的开头(与 任何兼容的 || 随便什么 接线员)。数组_前置(1,数组[2,3]) → {1,2,3} | ||||
数组_移除 ( 随便什么 , 任何兼容的 ) → 随便什么 从数组中删除与给定值相等的所有元素。数组必须是一维的。比较是使用 与…没有区别 语义,因此可以删除无效的 s数组_移除(数组[1,2,3,2],2) → {1,3} | ||||
数组_替换 ( 随便什么 , 任何兼容的 , 任何兼容的 ) → 随便什么 用第三个参数替换等于第二个参数的每个数组元素。 数组_替换(数组[1,2,5,4],5,3) → {1,2,3,4} | ||||
数组到字符串 ( 大堆 任意数组 , 定界符 文本 [, *空字符串_ 文本 ] ) → 文本 将每个数组元素转换为其文本表示形式,并将由 定界符 一串如果空字符串 *是给予的,不是无效的 然后无效的 数组条目由该字符串表示;否则,它们将被忽略。数组_到_字符串(数组[1,2,3,NULL,5],',','*') → 1,2,3,*,5 | ||||
上排 ( 任意数组 , 整数 ) → 整数 返回请求的数组维度的上限。 数组_upper(数组[1,8,3,7],1) → 4. | ||||
基数 ( 任意数组 ) → 整数 返回数组中的元素总数,如果数组为空,则返回0. 基数(数组[[1,2],[3,4]) → 4. | ||||
trim_阵列 ( 大堆 任意数组 , n 整数 ) → 任意数组 通过删除最后一个数组来修剪数组* n *元素。如果数组是多维的,则只修剪第一个维度。trim_数组(数组[1,2,3,4,5,6],2) → {1,2,3,4} | ||||
不安 ( 任意数组 ) → 任意元素集 将数组展开为一组行。阵列的元素按存储顺序读取。 unnest(数组[1,2]) → <br/><br/>`1<br/>2<br/><br/>`unest(数组['foo','bar',['baz','qux'])→ <br/>foo<br/>bar<br/>baz<br/>qux<br/><br/> | ||||
不安 ( 任意数组 , 任意数组 [, ... ] ) → 任意元素的集合,任意元素[,…] 将多个数组(可能具有不同的数据类型)扩展为一组行。如果数组的长度不尽相同,则较短的数组将填充 无效的 s、 此表单只允许在查询的FROM子句中使用;看见第7.2.1.4节.从unnest(数组[1,2],数组['foo','bar','baz'])中选择*作为x(a,b) → ````` A. | b ---+----- 1. | 福 2. | 酒吧 | 巴兹 ``` |
# 笔记
有两种不同的行为字符串到数组
来自PostgreSQL 9.1之前的版本。首先,它将返回一个空(零元素)数组,而不是无效的
当输入字符串长度为零时。第二,如果分隔符字符串是无效的
,该函数将输入拆分为单个字符,而不是返回无效的
和以前一样。
另见第9.21节关于聚合函数数组_agg
用于阵列。