PostgreSQL 行列轉(zhuǎn)換的實(shí)現(xiàn)方法
一、造測(cè)試數(shù)據(jù)
create table test (
id int,
json1 varchar,
json2 varchar
);
insert into test values(1,'111','{111}');
insert into test values(2,'111,222','{111,222}');
insert into test values(3,'111,222,333','{111,222,333}');
select * from test;造完數(shù)據(jù)如下

二、行轉(zhuǎn)列
1.函數(shù)定義
regexp_split_to_table是PostgreSQL中的一個(gè)函數(shù),用于將一個(gè)字符串根據(jù)正則表達(dá)式進(jìn)行分割,并將結(jié)果返回為一個(gè)表格,每個(gè)分割后的部分作為一行。
2.語(yǔ)法
regexp_split_to_table(string text, pattern text) → setof text string:要分割的原始字符串。 pattern:用于分割的正則表達(dá)式模式? 返回值,該函數(shù)返回一個(gè)setof text,即一個(gè)文本類(lèi)型的行集合,包含所有分割后的部分
3.示例
select
id
,json1
,json2
,regexp_replace(regexp_replace(json2,'{',''),'}','') no_json2 --剔除json2外面大括號(hào)
,regexp_split_to_table(json1,',') as j1 --使用json1來(lái)轉(zhuǎn)換結(jié)果
,regexp_split_to_table(regexp_replace(regexp_replace(json2,'{',''),'}',''),',') as j2 --使用json2來(lái)轉(zhuǎn)換結(jié)果
from test
;執(zhí)行結(jié)果

三、列轉(zhuǎn)行
1.函數(shù)定義
string_agg() 函數(shù)是 PostgreSQL 中的一個(gè)聚合函數(shù),用于將一個(gè)列中的值連接成一個(gè)字符串。
2.語(yǔ)法
string_agg(column_name, separator) column_name:要聚合的列名。 separator:可選參數(shù),用于連接各個(gè)值的分隔符。如果未指定或?yàn)榭眨瑒t使用默認(rèn)分隔符(逗號(hào)加空格)。
3.示例
--將j1用;拼接
select string_agg (j1,';')
from (
select
id
,json1
,json2
,regexp_replace(regexp_replace(json2,'{',''),'}','') no_json2 --剔除json2外面大括號(hào)
,regexp_split_to_table(json1,',') as j1 --使用json1來(lái)轉(zhuǎn)換結(jié)果
,regexp_split_to_table(regexp_replace(regexp_replace(json2,'{',''),'}',''),',') as j2 --使用json2來(lái)轉(zhuǎn)換結(jié)果
from test
) t
;執(zhí)行結(jié)果

--根據(jù)id分組按j1用abc拼接
select id,string_agg (j1,'abc')
from (
select
id
,json1
,json2
,regexp_replace(regexp_replace(json2,'{',''),'}','') no_json2 --剔除json2外面大括號(hào)
,regexp_split_to_table(json1,',') as j1 --使用json1來(lái)轉(zhuǎn)換結(jié)果
,regexp_split_to_table(regexp_replace(regexp_replace(json2,'{',''),'}',''),',') as j2 --使用json2來(lái)轉(zhuǎn)換結(jié)果
from test
) t
group by id
;執(zhí)行結(jié)果

到此這篇關(guān)于pgsql行列轉(zhuǎn)換的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)pgsql行列轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
postgresql通過(guò)索引優(yōu)化查詢(xún)速度操作
這篇文章主要介紹了postgresql通過(guò)索引優(yōu)化查詢(xún)速度操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
PostgreSQL數(shù)據(jù)庫(kù)中to_timestamp函數(shù)用法示例
PostgreSQL 的 to_timestamp 函數(shù)可以將字符串或整數(shù)轉(zhuǎn)換為時(shí)間戳,這篇文章主要介紹了PostgreSQL數(shù)據(jù)庫(kù)中to_timestamp函數(shù)用法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-08-08
解決PostgreSQL Array使用中的一些小問(wèn)題
這篇文章主要介紹了解決PostgreSQL Array使用中的一些小問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
PostgreSQL 中字段類(lèi)型varchar的用法
這篇文章主要介紹了PostgreSQL 中字段類(lèi)型varchar的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
pgsql 如何刪除仍有活動(dòng)鏈接的數(shù)據(jù)庫(kù)
這篇文章主要介紹了pgsql 刪除仍有活動(dòng)鏈接的數(shù)據(jù)庫(kù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
PostgreSQL主從搭建的實(shí)現(xiàn)步驟
本文主要介紹了一主一從PostgreSQL架構(gòu),配置流復(fù)制賬戶(hù)及主從參數(shù)文件,執(zhí)行基礎(chǔ)備份,檢查復(fù)制槽和節(jié)點(diǎn)狀態(tài)以確認(rèn)搭建成功,下面就來(lái)具體介紹一下,感興趣的可以了解一下2025-07-07
PostgreSQL數(shù)據(jù)庫(kù)管理系統(tǒng)快速入門(mén)
這篇文章主要介紹了PostgreSQL數(shù)據(jù)庫(kù)快速入門(mén),PostgreSQL是一個(gè)功能強(qiáng)大的開(kāi)源對(duì)象關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),他使用和擴(kuò)展了SQL語(yǔ)言,并結(jié)合了許多安全存儲(chǔ)和擴(kuò)展最復(fù)雜數(shù)據(jù)工作負(fù)載的功能,需要的朋友可以參考下2023-07-07

