memo:PostgreSQL的数组函数

本文介绍了SQL中数组类型的使用方法,包括各种数组运算符和函数的应用示例。通过这些工具,可以更高效地处理数据,例如减少JDBC执行次数并利用数组优化查询条件以更好地使用索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组也是我们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)

{"success":true,"message":"????","code":200,"result":{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NDIyMjA0MzgsInVzZXJuYW1lIjoiYWRtaW4ifQ.WC1dh4XlyFA4d55GiMN786Abil1zPhBB41jwqSF5gfk","userInfo":{"id":"1","username":"admin","realname":"admin","avatar":null,"birthday":null,"sex":null,"email":"QingDaoJunQiao@luxshare-ict.com","phone":null,"orgCode":null,"loginTenantId":null,"orgCodeTxt":null,"status":1,"delFlag":0,"workNo":"admin","post":null,"telephone":null,"createBy":null,"createTime":null,"updateBy":"admin","updateTime":"2025-02-28 09:26:23","activitiSync":null,"userIdentity":null,"departIds":null,"relTenantIds":null,"clientId":null,"homePath":null,"postText":null,"bpmStatus":null,"level":"3","leader":"admin","leaderName":null,"sbu":null,"isLeader":null,"deptId":"108834","deptName":null,"roleIds":null,"changePasswordTime":"2025-02-28 09:26:23","loginIp":"","loginDate":null,"queryParams":null,"isSuperUser":1,"isSpecialUser":null,"userIdsBatch":null,"customGroupIds":null,"functionType":null,"item":null,"customDetailId":null},"depart":{"id":"108834","parentId":"108824","departName":"MES??????","departNameEn":"MES development Dept.","departNameAbbr":null,"departOrder":0,"leader":"R013373","description":null,"orgCategory":null,"orgType":"4","orgCode":"G100001>122833>108824>108834","mobile":null,"fax":null,"address":null,"memo":null,"status":"1","delFlag":"0","qywxIdentifier":null,"createBy":"sys","createTime":"2023-08-22 19:10:39","updateBy":"sys","updateTime":"2025-03-17 10:02:30","tenantId":null,"izLeaf":1,"visible":0,"directorUserIds":null,"oldDirectorUserIds":null,"bu":null,"sbu":null,"buId":null,"sbuId":null,"buTitle":null,"sbuTitle":null}},"timestamp":1742177238563}在存储过程中将这些字符存入临时表中
03-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值