memo:PostgreSQL的数组函数

数组也是我们SQL中经常使用的类型。像unnest这个函数可以把数组转换成一个子查询,可以方便地实现一些功能。利用好数组有时候会提高系统性能。

比如减少JDBC执行次数,使用数组后能够使得查询条件使用索引等。

Table 9-40. Array Operators

OperatorDescriptionExampleResult
=equalARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3]t
<>not equalARRAY[1,2,3] <> ARRAY[1,2,4]t
<less thanARRAY[1,2,3] < ARRAY[1,2,4]t
>greater thanARRAY[1,4,3] > ARRAY[1,2,4]t
<=less than or equalARRAY[1,2,3] <= ARRAY[1,2,3]t
>=greater than or equalARRAY[1,4,3] >= ARRAY[1,4,3]t
@>containsARRAY[1,4,3] @> ARRAY[3,1]t
<@is contained byARRAY[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 concatenationARRAY[1,2,3] || ARRAY[4,5,6]{1,2,3,4,5,6}
||array-to-array concatenationARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]]{{1,2,3},{4,5,6},{7,8,9}}
||element-to-array concatenation3 || ARRAY[4,5,6]{3,4,5,6}
||array-to-element concatenationARRAY[4,5,6] || 7{4,5,6,7}

Table 9-41. Array Functions

FunctionReturn TypeDescriptionExampleResult
array_append(anyarray, anyelement)anyarrayappend an element to the end of an arrayarray_append(ARRAY[1,2], 3){1,2,3}
array_cat(anyarray, anyarray)anyarrayconcatenate two arraysarray_cat(ARRAY[1,2,3], ARRAY[4,5]){1,2,3,4,5}
array_ndims(anyarray)intreturns the number of dimensions of the arrayarray_ndims(ARRAY[[1,2,3], [4,5,6]])2
array_dims(anyarray)textreturns a text representation of array's dimensionsarray_dims(ARRAY[[1,2,3], [4,5,6]])[1:2][1:3]
array_fill(anyelement, int[], [, int[]])anyarrayreturns an array initialized with supplied value and dimensions, optionally with lower bounds other than 1array_fill(7, ARRAY[3], ARRAY[2])[2:4]={7,7,7}
array_length(anyarray, int)intreturns the length of the requested array dimensionarray_length(array[1,2,3], 1)3
array_lower(anyarray, int)intreturns lower bound of the requested array dimensionarray_lower('[0:2]={1,2,3}'::int[], 1)0
array_prepend(anyelement, anyarray)anyarrayappend an element to the beginning of an arrayarray_prepend(1, ARRAY[2,3]){1,2,3}
array_to_string(anyarray, text [, text])textconcatenates array elements using supplied delimiter and optional null stringarray_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*')1,2,3,*,5
array_upper(anyarray, int)intreturns upper bound of the requested array dimensionarray_upper(ARRAY[1,8,3,7], 1)4
string_to_array(text, text [, text])text[]splits string into array elements using supplied delimiter and optional null stringstring_to_array('xx~^~yy~^~zz', '~^~', 'yy'){xx,NULL,zz}
unnest(anyarray)setof anyelementexpand an array to a set of rowsunnest(ARRAY[1,2])
1
2
(2 rows)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值