本文是《postgresql实战》的读书笔记;具体可以参考这本书相关章节。
语法格式如下:
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
函数 和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实战》