教你如何解決PostgreSQL Array使用中的一些小問題

大雄45發表於2021-02-12
導讀 這篇文章主要介紹瞭解決PostgreSQL Array使用中的一些小問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在PostgreSQL 中可以使用Array資料結構,例如

select array[1,2,3]; 
return {1,2,3}

但是,如果

select array[1,2,3][1]; --會報錯 
select (select array[1,2,3])[1] --可以使用

那麼在用正則匹配函式 regexp_match 就會遇到這樣的問題,如

select regexp_match('123-123', '(\d+)-(\d+)'); --return {123, 123}
select regexp_match('123-123', '(\d+)-(\d+)')[1]; --報錯

但是,如果你想獲取其中一個元素,你就得使用巢狀查詢,如

select(select regexp_match('123-123', '(\d+)-(\d+)'))[1]; --return 123

其次,你如果要用regexp_matches 加上全域性搜尋,可能會生成多行資料,如

select 'a', array(select regexp_matches('aa-aa', '(aa)+', 'g'));
-- return 2 rows
a {aa}
a {aa}

合併為一行,需要array函式

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
補充:PostgreSQL的 array_to_string 功能

開始

用 第二個引數連線陣列元素,例:

postgres=# select array_to_string (ARRAY[1,2,3],'##');
 array_to_string 
-----------------
 1##2##3
(1 row)
postgres=#

結束~

以上為個人經驗,希望能給大家一個參考。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2757198/,如需轉載,請註明出處,否則將追究法律責任。

相關文章