数组的函数和运算。数组运算和其他类型大致相同,只是数据类型变换了。有一些数组特定的函数,稍作了解。
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) |