PostgreSQL:string_agg 多列值聚合成一列的操作示例

 更新时间:2023年08月05日 09:08:36   作者:qq_35987023  
PostgreSQL中的STRING_AGG()函数是一个聚合函数,用于连接字符串列表并在字符串之间放置分隔符,这篇文章主要介绍了PostgreSQL:string_agg多列值聚合成一列,需要的朋友可以参考下

PostgreSQL:string_agg 多列值聚合成一列

string_agg是PostgreSQL中的一个聚合函数,用于将一组值连接为一个字符串。它接受两个参数:要连接的值和连接符。

语法如下:

string_agg(expression, delimiter)

其中,expression是要连接的值的表达式,可以是列名、常量或表达式;delimiter是用于分隔连接的字符串。

string_agg通常结合GROUP BY子句一起使用,以便将结果按组连接到一列中。

下面是一个示例:

SELECT string_agg(name, ', ') AS concatenated_names
FROM employee;

该查询将连接employee表中所有员工的姓名,并使用逗号分隔。结果将在一列中显示。

请注意,使用string_agg函数时,要注意连接后的字符串可能会超过数据库中设置的字符串长度限制。如果需要,可以使用substring函数截断结果字符串以满足长度要求。

示例

create table employee(
    id int4 primary key,
    name varchar(100)
);
comment on table employee is '职工表';
comment on column employee.name is '职工名';
insert into employee(id,name) values (1,'张三');
insert into employee(id,name) values (2,'李四');
insert into employee(id,name) values (3,'王二');
insert into employee(id,name) values (4,'麻子');
select string_agg(name,', ') as concatenated_names
from employee;

结果 张三, 李四, 王二, 麻子

postgresql 系列之聚合函数string_agg 和 array_agg

本文是《postgresql实战》的读书笔记;具体可以参考这本书相关章节。

一、 string_agg 函数

语法格式如下:

string_agg(expression,delimiter)

string_agg 函数能将结果集某个字段的所有行连接成字符串,并以delimiter分隔符分隔,expression 表示要处理的字符类型数据;

案例:

CREATE TABLE city(
	country character varying(64),
	city character varying(64)
);
INSERT INTO city VALUES
('中国','台北'),
('中国','香港'),
('中国','上海'),
('日本','东京'),
('日本','大阪');
SELECT country,string_agg(city,',')
FROM city 
GROUP BY country; 

在这里插入图片描述

二、array_agg 函数

array_agg函数 和string_agg 函数类似,最主要的区别为返回的类型为数组,数组数据类型同输入数据类型一致,array_agg函数支持两种语法。

array_agg(expression)  --输入参数为任何非数组类型

在这里插入图片描述

array_agg 函数输出的结果为字符类型数组,使用array_agg函数主要优点在于可以使用数组相关函数和操作符

案例:

-- 创建数组
create table test_array(id int4[]);
INSERT INTO test_array(id) values(array[1,2,4]),(array[4,5,6]);

在这里插入图片描述

可以将array_agg 函数输出类型转成字符串,并用指定分隔符分隔

在这里插入图片描述

补充

-- string_to_array 将字符串转成数字,通过自定切割符合。
select array_length(string_to_array('1.2.3.4.5','.'), 1); --5
--array_length(anyarray,int) 返回数组指定维度的长度

参考

《postgresql实战》

到此这篇关于PostgreSQL:string_agg多列值聚合成一列的文章就介绍到这了,更多相关PostgreSQL多列值聚合成一列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PostgreSQL基础知识之SQL操作符实践指南

    PostgreSQL基础知识之SQL操作符实践指南

    这篇文章主要给大家介绍了关于PostgreSQL基础知识之SQL操作符实践的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用PostgreSQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-05-05
  • PostgreSQL 性能优化之服务器参数配置操作

    PostgreSQL 性能优化之服务器参数配置操作

    这篇文章主要介绍了PostgreSQL 性能优化之服务器参数配置操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 使用postgresql 模拟批量数据插入的案例

    使用postgresql 模拟批量数据插入的案例

    这篇文章主要介绍了使用postgresql 模拟批量数据插入的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 浅谈PostgreSQL消耗的内存计算方法

    浅谈PostgreSQL消耗的内存计算方法

    这篇文章主要介绍了浅谈PostgreSQL消耗的内存计算方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL报错 解决操作符不存在的问题

    PostgreSQL报错 解决操作符不存在的问题

    这篇文章主要介绍了PostgreSQL报错 解决操作符不存在的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • postgresql修改自增序列操作

    postgresql修改自增序列操作

    这篇文章主要介绍了postgresql修改自增序列操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • PostgreSQL归档配置及自动清理归档日志的操作

    PostgreSQL归档配置及自动清理归档日志的操作

    这篇文章主要介绍了PostgreSQL归档配置及自动清理归档日志的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • postgresql查询每个月的最后一天日期并对未查到的日期结果补0(操作示例)

    postgresql查询每个月的最后一天日期并对未查到的日期结果补0(操作示例)

    这篇文章主要介绍了postgresql查询每个月的最后一天日期,并对未查到的日期结果补0,pgsql需要使用函数使用date_trunc()函数找到指定月第一天,然后对该日期先加一个月在减一个月就能得到你传给的日期的最后一天日期,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • PostgreSQL使用JSONB存储和查询复杂的数据结构

    PostgreSQL使用JSONB存储和查询复杂的数据结构

    在PostgreSQL中,JSONB是一种二进制格式的JSON数据类型,它允许你在数据库中存储和查询复杂的JSON数据结构,本文给大家介绍了如何使用JSONB类型在PostgreSQL中存储和查询复杂的数据结构,需要的朋友可以参考下
    2024-04-04
  • PostgreSQL常用字符串分割函数整理汇总

    PostgreSQL常用字符串分割函数整理汇总

    作为当前最强大的开源数据库,Postgresql(以下简称pg)对字符的处理也是最为强大的,下面这篇文章主要给大家介绍了关于PostgreSQL常用字符串分割函数的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07

最新评论