Postgresql - Functions and Operators 函数和运算 - Array

数组的函数和运算。数组运算和其他类型大致相同,只是数据类型变换了。有一些数组特定的函数,稍作了解。

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)

猜你喜欢

转载自blog.csdn.net/chuckchen1222/article/details/81456005