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

2024-03-01 0 739
目录
  • PostgreSQL:string_agg 多列值聚合成一列
  • postgresql 系列之聚合函数string_agg 和 array_agg
    • 一、 string_agg 函数
    • 二、array_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;

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

二、array_agg 函数

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

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

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

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

案例:

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

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

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

PostgreSQL:string_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多列值聚合成一列内容请搜索悠久资源以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 PostgreSQL PostgreSQL:string_agg 多列值聚合成一列的操作示例 https://www.u-9.cn/database/postgresql/182821.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务