postgresql 系列之聚合函数string_agg 和 array_agg

本文介绍PostgreSQL中string_agg和array_agg函数的使用方法,包括语法格式和实际案例,展示如何将结果集中的数据聚合为字符串或数组,适用于数据处理和分析场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是《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实战》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值