解决PostgreSQL Array使用中的一些小问题
在PostgreSQL中可以使用Array数据结构,例如
selectarray[1,2,3]; return{1,2,3}
但是,如果
selectarray[1,2,3][1];--会报错 select(selectarray[1,2,3])[1]--可以使用
那么在用正则匹配函数regexp_match就会遇到这样的问题,如
selectregexp_match('123-123','(\d+)-(\d+)');--return{123,123} selectregexp_match('123-123','(\d+)-(\d+)')[1];--报错
但是,如果你想获取其中一个元素,你就得使用嵌套查询,如
select(selectregexp_match('123-123','(\d+)-(\d+)'))[1];--return123
其次,你如果要用regexp_matches加上全局搜索,可能会生成多行数据,如
select'a',array(selectregexp_matches('aa-aa','(aa)+','g')); --return2rows a{aa} a{aa}
合并为一行,需要array函数
select'a',array(selectregexp_matches('aa-aa','(aa)+','g')); --return a{{aa},{aa}}
取其中的元素
selecta,b[1][1]from(select'a'asa,array(selectregexp_matches('aa-aa','(aa)+','g'))asb)asc; --return aa
补充:PostgreSQL的array_to_string功能
开始
用第二个参数连接数组元素,例:
postgres=#selectarray_to_string(ARRAY[1,2,3],'##'); array_to_string ----------------- 1##2##3 (1row) postgres=#
结束~
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。