pgsql行列轉換

目錄

一、造測試數據

二、行轉列

1.函數定義

2.語法

3.示例

三、列轉行

1.函數定義

2.語法

3.示例


一、造測試數據

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;

造完數據如下?

二、行轉列

1.函數定義

?regexp_split_to_table是PostgreSQL中的一個函數,用于將一個字符串根據正則表達式進行分割,并將結果返回為一個表格,每個分割后的部分作為一行??。

2.語法

regexp_split_to_table(string text, pattern text) → setof text
string:要分割的原始字符串。
pattern:用于分割的正則表達式模式?返回值,該函數返回一個setof text,即一個文本類型的行集合,包含所有分割后的部分

3.示例

select id,json1 ,json2 ,regexp_replace(regexp_replace(json2,'{',''),'}','') no_json2 --剔除json2外面大括號,regexp_split_to_table(json1,',') as j1 --使用json1來轉換結果,regexp_split_to_table(regexp_replace(regexp_replace(json2,'{',''),'}',''),',') as j2 --使用json2來轉換結果
from test 
;

執行結果

三、列轉行

1.函數定義

string_agg() 函數是 PostgreSQL 中的一個聚合函數,用于將一個列中的值連接成一個字符串。

2.語法

string_agg(column_name, separator) ?column_name:要聚合的列名。
separator:可選參數,用于連接各個值的分隔符。如果未指定或為空,則使用默認分隔符(逗號加空格)。

3.示例

--將j1用;拼接
select string_agg (j1,';')
from (
select id,json1 ,json2 ,regexp_replace(regexp_replace(json2,'{',''),'}','') no_json2 --剔除json2外面大括號,regexp_split_to_table(json1,',') as j1 --使用json1來轉換結果,regexp_split_to_table(regexp_replace(regexp_replace(json2,'{',''),'}',''),',') as j2 --使用json2來轉換結果
from test 
) t 
;

執行結果

--根據id分組按j1用abc拼接
select id,string_agg (j1,'abc')
from (
select id,json1 ,json2 ,regexp_replace(regexp_replace(json2,'{',''),'}','') no_json2 --剔除json2外面大括號,regexp_split_to_table(json1,',') as j1 --使用json1來轉換結果,regexp_split_to_table(regexp_replace(regexp_replace(json2,'{',''),'}',''),',') as j2 --使用json2來轉換結果
from test 
) t 
group by id
;

執行結果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897019.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897019.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897019.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NVIDIA(英偉達) GPU 芯片架構發展史

GPU 性能的關鍵參數 CUDA 核心數量(個):決定了 GPU 并行處理能力,在 AI 等并行計算類業務下,CUDA 核心越多性能越好。 顯存容量(GB):決定了 GPU 加載數據量的大小,在 AI…

《Python實戰進階》No 10:基于Flask案例的Web 安全性:防止 SQL 注入、XSS 和 CSRF 攻擊

第10集:Web 安全性:防止 SQL 注入、XSS 和 CSRF 攻擊 在現代 Web 開發中,安全性是至關重要的。無論是用戶數據的保護,還是系統穩定性的維護,開發者都需要對常見的 Web 安全威脅有深刻的理解,并采取有效的防…

【大數據分析 | 深度學習】在Hadoop上實現分布式深度學習

【作者主頁】Francek Chen 【專欄介紹】 ? ? ?智能大數據分析 ? ? ? 智能大數據分析是指利用先進的技術和算法對大規模數據進行深入分析和挖掘,以提取有價值的信息和洞察。它結合了大數據技術、人工智能(AI)、機器學習(ML&a…

盛鉑科技SCP4000射頻微波功率計與SPP5000系列脈沖峰值 USB功率計 區別

在射頻(RF)和微波測試領域,快速、精準的功率測量是確保通信系統、雷達、衛星設備等高性能運行的核心需求。無論是連續波(CW)信號的穩定性測試,還是脈沖信號的瞬態功率分析,工程師都需要輕量化、…

自學微信小程序的第十三天

DAY13 1、使用map組件在頁面中創建地圖后,若想在JS文件中對地圖進行控制,需要通過地圖API來完成。先通過wx.createMapContext()方法創建MapContext(Map上下文)實例,然后通過該實例的相關方法來操作map組件。 const m…

深入解析 C# 中的泛型:概念、用法與最佳實踐

C# 中的 泛型(Generics) 是一種強大的編程特性,允許開發者在不預先指定具體數據類型的情況下編寫代碼。通過泛型,C# 能夠讓我們編寫更靈活、可重用、類型安全且性能優良的代碼。泛型廣泛應用于類、方法、接口、委托、集合等多個方…

H5DS編輯器是如何讓企業快速構建動態頁面

H5DS編輯器核心亮點: 1.拖拽式操作,小白友好:無需設計與代碼基礎!通過簡單拖拽元素、調整文字和動畫,即可生成交互式H5頁面。內置海量模板和素材庫,支持自定義設計風格,輕松適配企業品牌需求。…

Unity ECS與MonoBehaviour混合架構開發實踐指南

一、混合架構設計背景 1. 技術定位差異 ECS(Entity Component System):面向數據設計(DOD),適用于大規模實體計算(如10萬單位戰斗) MonoBehaviour:面向對象設計&#xf…

[項目]基于FreeRTOS的STM32四軸飛行器: 三.電源控制

基于FreeRTOS的STM32四軸飛行器: 三.電源控制 一.IP5305T芯片手冊二.電源控制任務 一.IP5305T芯片手冊 注意該芯片低功耗特性,為防止進入待機,每隔一段時間發送一個電平。 官方提供的芯片外圍電路設計圖: 電氣特性: 當負載電流持…

java環境部署

java環境部署 一、準備工作 jrejdkeclipse jdk下載:21和1.8-----官網:Oracle:Java 下載 |神諭 該處選擇要依據自身的系統類型選擇下載 idea的下載安裝:IntelliJ IDEA | Other Versions 二、安裝 三、環境配置 四、使用 五、i…

微服務通信:用gRPC + Protobuf 構建高效API

引言 在微服務架構中,服務之間的通信是系統設計的核心問題之一。傳統的RESTful API雖然簡單易用,但在性能、類型安全和代碼生成等方面存在一定的局限性。gRPC作為一種高性能、跨語言的RPC框架,結合Protobuf(Protocol Buffers&…

使用 Docker 和 Nginx 高效部署 Web 服務(適用于慈云數據云服務器)

前言 在現代 Web 服務部署中,Docker 和 Nginx 的結合是一種高效、靈活且可擴展的解決方案。 Docker 使應用程序及其依賴項封裝到一個獨立的容器中,確保一致性,并簡化部署過程。Nginx 作為高性能 Web 服務器和反向代理,能夠高效處…

C 語言數據結構(一):時/空間復制度

目錄 一、前言 1. 什么是數據結構 2. 什么是算法 二、時 / 空間復雜度 1. 算法效率 2. 時間復雜度 2.1 時間復雜度的概念 2.2 大 O 的漸進表示法 2.3 常見的計算時間復雜度的例子 2.3.1 實例 1 2.3.2 實例 2 2.3.3 實例 3 2.3.4 實例 4 2.3.5 實例 5 &#xff1a…

一文讀懂Redis分布式鎖

引言 在當今互聯網時代,分布式系統已成為大規模應用的主流架構。然而,這種架構中多個服務同時對共享資源的操作可能導致并發問題,如數據不一致和資源爭用。有效管理這些并發訪問,確保共享資源的安全性顯得尤為重要。 分布式鎖作…

23種設計模式一覽【設計模式】

文章目錄 前言一、創建型模式(Creational Patterns)二、結構型模式(Structural Patterns)三、行為型模式(Behavioral Patterns) 前言 設計模式是軟件工程中用來解決特定問題的一組解決方案。它們是經過驗證…

極狐GitLab 17.9 正式發布,40+ DevSecOps 重點功能解讀【三】

GitLab 是一個全球知名的一體化 DevOps 平臺,很多人都通過私有化部署 GitLab 來進行源代碼托管。極狐GitLab 是 GitLab 在中國的發行版,專門為中國程序員服務。可以一鍵式部署極狐GitLab。 學習極狐GitLab 的相關資料: 極狐GitLab 官網極狐…

elk的相關的基礎

以下是關于ELK(Elasticsearch, Logstash, Kibana)的200個基礎問題及其答案,涵蓋了ELK的核心概念、組件、配置、使用場景、優化等方面。 ?Elasticsearch 基礎 ?**什么是Elasticsearch?**? 答:Elasticsearch是一個分…

Beyond Compare for mac v5.0.6.30713 文件對比利器 支持M、Intel芯片

Mac毒搜集到的Beyond Compare是一套超級的文件及文件夾(目錄)的比較工具,不僅可以快速比較出兩個目錄的不同,還可以比較每個文件的內容,而且可以任意顯示比較結果。 應用介紹 程序內建了文件瀏覽器,方便您對文件、文件夾、壓縮包…

ProfibusDP主站轉ModbusTCP網關如何進行數據互換

ProfibusDP主站轉ModbusTCP網關如何進行數據互換 在現代工業自動化領域,通信協議的多樣性和復雜性不斷增加。Profibus DP作為一種經典的現場總線標準,廣泛應用于工業控制網絡中;而Modbus TCP作為基于以太網的通信協議,因其簡單易…

python代碼注釋方式

在 Python 中,注釋是用于解釋代碼、提高代碼可讀性和可維護性的重要工具。Python 支持兩種主要的注釋方式:單行注釋和多行注釋。此外,Python 還支持文檔字符串(docstrings),用于為模塊、函數、類和方法提供…