pgsql行列转换

06-01 1099阅读

目录

一、造测试数据

二、行转列

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;

造完数据如下 

pgsql行列转换

二、行转列

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 
;

执行结果

pgsql行列转换

三、列转行

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 
;

执行结果

pgsql行列转换

--根据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
;

执行结果

pgsql行列转换

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码