當(dāng)前位置:首頁(yè) >  站長(zhǎng) >  數(shù)據(jù)庫(kù) >  正文

解決PostgreSQL Array使用中的一些小問(wèn)題

 2021-05-24 16:56  來(lái)源: 腳本之家   我來(lái)投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)

這篇文章主要介紹了解決PostgreSQL Array使用中的一些小問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧。

在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è)元素,你就得使用嵌套查詢,如

1select(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é)束~

文章來(lái)源:腳本之家

來(lái)源地址:https://www.jb51.net/article/204877.htm

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)文章

熱門(mén)排行

信息推薦