数组函数和运算符

更新时间:

云原生数据仓库 AnalyticDB PostgreSQL 版兼容PostgreSQL中的数组函数和运算符。本文简单列举云原生数据仓库 AnalyticDB PostgreSQL 版兼容的数组函数和运算符及用法示例。

PostgreSQL中数组函数和操作符的详细使用方法,请参见PostgreSQL官方文档:数组函数和操作符

数组运算符

简介

数组运算符是对数组类型的数据进行运算的符号,例如:||。数组运算符直接作用于表达式,对表达式进行运算,并且返回运算结果。

详情和示例

运算符

描述

使用示例

示例结果

=

等于。

ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3]

t

<>

不等于。

ARRAY[1,2,3] <> ARRAY[1,2,4]

t

<

小于。

ARRAY[1,2,3] < ARRAY[1,2,4]

t

>

大于。

ARRAY[1,4,3] > ARRAY[1,2,4]

t

<=

小于或等于。

ARRAY[1,2,3] <= ARRAY[1,2,3]

t

>=

大于或等于。

ARRAY[1,4,3] >= ARRAY[1,4,3]

t

@>

包含。

ARRAY[1,4,3] @> ARRAY[3,1,3]

t

<@

包含于。

ARRAY[2,2,7] <@ ARRAY[1,7,4,2,6]

t

&&

重叠(有共同的元素)。

ARRAY[1,4,3] && ARRAY[2,1]

t

||

数组和数组的连接。

ARRAY[1,2,3] || ARRAY[4,5,6]

{1,2,3,4,5,6}

||

数组和多维数组的连接。

ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]]

{{1,2,3},{4,5,6},{7,8,9}}

||

元素和数组的连接。

3 || ARRAY[4,5,6]

{3,4,5,6}

||

数组和元素的连接。

ARRAY[4,5,6] || 7

{4,5,6,7}

数组函数

简介

数组函数是对数组进行操作和管理的函数。通过使用数组函数可以实现数组的连接、追加、删除等大部分运算,从而提高编程效率。

详情和示例

函数

返回类型

描述

使用示例

示例结果

array_append(any array,any element)

any array

将元素追加到数组的末尾。

array_append(ARRAY[1,2], 3)

{1,2,3}

array_cat(any array,any array)

any array

连接两个数组。

array_cat(ARRAY[1,2,3], ARRAY[4,5])

{1,2,3,4,5}

array_ndims(any array)

int

返回数组的维度。

array_ndims(ARRAY[[1,2,3], [4,5,6]])

2

array_dims(any array)

text

返回数组维度的文本表示形式。

array_dims(ARRAY[[1,2,3], [4,5,6]])

[1:2][1:3]

array_fill(any element,int[], [,int[]])

any array

返回一个维度已初始化和使用提供的值的数组,下限(可选)非1。

array_fill(7, ARRAY[3], ARRAY[2])

[2:4]={7,7,7}

array_length(any array,int)

int

返回被请求的数组维度的长度。

array_length(array[1,2,3], 1)

3

array_lower(any array,int)

int

返回被请求的数组维度的下限。

array_lower('[0:2]={1,2,3}'::int[], 1)

0

array_position(any array,any element[,int])

int

返回在该数组中从第一个元素开始或第三个参数指定的元素开始(数组必须是一维的),第二个参数第一次出现的下标。

array_position(ARRAY['sun','mon','tue','wed','thu','fri','sat'], 'mon')

2

array_positions(any array,any element)

int[]

返回第一个参数给定的数组(数组必须是一维的)中, 第二个参数所有出现位置的下标构成的数组。

array_positions(ARRAY['A','A','B','A'], 'A')

{1,2,4}

array_prepend(any element,any array)

any array

将元素追加到数组的开头。

array_prepend(1, ARRAY[2,3])

{1,2,3}

array_remove(any array,any element)

any array

从数组中删除所有等于给定值的元素(数组必须是一维)。

array_remove(ARRAY[1,2,3,2], 2)

{1,3}

array_replace(any array,any element,any element)

any array

将等于给定值的每个数组元素替换为新值。

array_replace(ARRAY[1,2,5,4], 5, 3)

{1,2,3,4}

array_to_string(any array,text[,text])

text

使用提供的分隔符和可选的空字符串连接数组元素。

array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*')

1,2,3,*,5

array_upper(any array,int)

int

返回被请求的数组维度的上限。

array_upper(ARRAY[1,8,3,7], 1)

4

cardinality(any array)

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(any array)

set of any element

将数组展开成行。

unnest(ARRAY[1,2])

1
2

(2 行)

unnest(any array,any array[, ...])

set of any element, any element [, ...]

将多个数组(可能属于不同的类型)展开成行。这仅在FROM子句中生效。

unnest(ARRAY[1,2],ARRAY['foo','bar','baz'])

1    foo
2    bar
NULL baz

(3 行)