在PostgreSQL 中可以使用Array數(shù)據(jù)結(jié)構(gòu),例如
select array[1,2,3];
return {1,2,3}
但是,如果
select array[1,2,3][1]; --會(huì)報(bào)錯(cuò)
select (select array[1,2,3])[1] --可以使用
那么在用正則匹配函數(shù) regexp_match 就會(huì)遇到這樣的問(wèn)題,如
select regexp_match('123-123', '(\d+)-(\d+)'); --return {123, 123}
select regexp_match('123-123', '(\d+)-(\d+)')[1]; --報(bào)錯(cuò)
但是,如果你想獲取其中一個(gè)元素,你就得使用嵌套查詢(xún),如
select(select regexp_match('123-123', '(\d+)-(\d+)'))[1]; --return 123
其次,你如果要用regexp_matches 加上全局搜索,可能會(huì)生成多行數(shù)據(jù),如
select 'a', array(select regexp_matches('aa-aa', '(aa)+', 'g'));
-- return 2 rows
a {aa}
a {aa}
合并為一行,需要array函數(shù)
select 'a', array(select regexp_matches('aa-aa', '(aa)+', 'g'));
--return
a {{aa},{aa}}
取其中的元素
select a, b[1][1] from (select 'a' as a, array(select regexp_matches('aa-aa', '(aa)+', 'g')) as b) as c;
--return
aa
補(bǔ)充:PostgreSQL的 array_to_string 功能
開(kāi)始
用 第二個(gè)參數(shù)連接數(shù)組元素,例:
postgres=# select array_to_string (ARRAY[1,2,3],'##');
array_to_string
-----------------
1##2##3
(1 row)
postgres=#
結(jié)束~
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- 對(duì)Postgresql中的json和array使用介紹
- postgresql數(shù)據(jù)庫(kù)使用說(shuō)明_實(shí)現(xiàn)時(shí)間范圍查詢(xún)
- postgresql 實(shí)現(xiàn)將數(shù)組變?yōu)樾?/li>
- PostgreSQL 對(duì)數(shù)組的遍歷操作
- postgres array_to_string和array的用法講解