数组的函数和运算。数组运算和其他类型大致相同,只是数据类型变换了。有一些数组特定的函数,稍作了解。
Operator | Description | Example | Result |
= | equal 等于 | ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3] | t |
<> | not equal 不等于 | ARRAY[1,2,3] <> ARRAY[1,2,4] | t |
< | less than 小于 | ARRAY[1,2,3] < ARRAY[1,2,4] | t |
> | greater than 大于 | ARRAY[1,4,3] > ARRAY[1,2,4] | t |
<= | less than or equal 小于等于 | ARRAY[1,2,3] <= ARRAY[1,2,3] | t |
>= | greater than or equal 大于等于 | ARRAY[1,4,3] >= ARRAY[1,4,3] | t |
@> | contains 包含 | ARRAY[1,4,3] @> ARRAY[3,1] | t |
<@ | is contained by 被包含 | ARRAY[2,7] <@ ARRAY[1,7,4,2,6] | t |
&& | overlap (have elements in common) 元素是否存在交集 | ARRAY[1,4,3] && ARRAY[2,1] | t |
|| | array-to-array concatenation 将数组元素合并 | ARRAY[1,2,3] || ARRAY[4,5,6] | {1,2,3,4,5,6} |
|| | array-to-array concatenation 将数组元素合并 | ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]] | {{1,2,3},{4,5,6},{7,8,9}} |
|| | element-to-array concatenation 元素加入到数组 | 3 || ARRAY[4,5,6] | {3,4,5,6} |
|| | array-to-element concatenation 数组加入元素 | ARRAY[4,5,6] || 7 | {4,5,6,7} |
Function | Return Type | Description | Example | Result |
array_append(anyarray,anyelement) | anyarray | 加入元素到数组的最后 | array_append(ARRAY[1,2], 3) | {1,2,3} |
array_cat(anyarray,anyarray) | anyarray | 连接两个数组 | array_cat(ARRAY[1,2,3], ARRAY[4,5]) | {1,2,3,4,5} |
array_ndims(anyarray) | int | 返回数组的元素个数 | array_ndims(ARRAY[[1,2,3], [4,5,6]]) | 2 |
array_dims(anyarray) | text | 返回数组维度的文本表示形式 | array_dims(ARRAY[[1,2,3], [4,5,6]]) | [1:2][1:3] |
array_fill(anyelement,int[] [, int[]]) | anyarray | 返回具有提供值和维度初始化的数组,可选地具有低于1的下限 | array_fill(7, ARRAY[3], ARRAY[2]) | [2:4]={7,7,7} |
array_length(anyarray,int) | int | 返回请求数组维数的长度 | array_length(array[1,2,3], 1) | 3 |
array_lower(anyarray,int) | int | 返回请求数组维数的下限 | array_lower('[0:2]={1,2,3}'::int[], 1) | 0 |
array_position(anyarray,anyelement [, int]) | int | 返回数组中第二个参数的第一个出现的下标,从第三个参数或第一个元素(数组必须是一维)开始的元素开始。 | array_position(ARRAY['sun','mon','tue','wed','thu','fri','sat'], 'mon') | 2 |
array_positions(anyarray,anyelement) | int[] | 返回数组中作为第一个参数(数组必须是一维)的第二个参数的所有出现的下标数组。 | array_positions(ARRAY['A','A','B','A'], 'A') | {1,2,4} |
array_prepend(anyelement,anyarray) | anyarray | 将元素追加到数组的开头 | array_prepend(1, ARRAY[2,3]) | {1,2,3} |
array_remove(anyarray,anyelement) | anyarray | 删除与数组中给定值相等的所有元素(数组必须是一维的) | array_remove(ARRAY[1,2,3,2], 2) | {1,3} |
array_replace(anyarray,anyelement, anyelement) | anyarray | 用一个新的值替换每个给定元素的数组元素 | array_replace(ARRAY[1,2,5,4], 5, 3) | {1,2,3,4} |
array_to_string(anyarray,text [, text]) | text | 使用提供的分隔符和可选的空字符串连接数组元素 | array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*') | 1,2,3,*,5 |
array_upper(anyarray,int) | int | 返回请求数组维数的上界 | array_upper(ARRAY[1,8,3,7], 1) | 4 |
cardinality(anyarray) | int | 返回数组中的元素总数,如果数组为空,则返回0。 | cardinality(ARRAY[[1,2],[3,4]]) | 4 |
string_to_array(text,text [, text]) | text[] | 使用提供的分隔符和可选的空字符串将字符串拆分为数组元素 | string_to_array('xx~^~yy~^~zz', '~^~', 'yy') | {xx,NULL,zz} |
unnest(anyarray) | setof anyelement | 将数组展开为一行行显示 | unnest(ARRAY[1,2]) | 1 2 (2 rows) |
unnest(anyarray, anyarray[, ...]) | setof anyelement, anyelement [, ...] | 将多个数组(可能是不同类型)扩展到一组行。这只允许在从句中 | unnest(ARRAY[1,2],ARRAY['foo','bar','baz']) | 1 foo 2 bar NULL baz (3 rows) |