问题描述
postgresql中没有group_concat()
函数,使得应用从mysql数据库更换到postgrsql数据库时sql执行报错
解决方案:
(1) postgresql 有个跟mysql中group_concat()
功能一样的函数,叫array_agg()
,可以直接替换
(2)可以在postgresql自定义一个group_concat()
函数,如下
-- 字符串拼接聚合函数
-- postgresql13(含)以下的版本
CREATE AGGREGATE group_concat(anyelement)
(
sfunc = array_append, -- 每行的操作函数,将本行append到数组里
stype = anyarray, -- 聚集后返回数组类型
initcond = '{}' -- 初始化空数组
);
-- postgresql14(含)以上的版本
CREATE AGGREGATE group_concat(anycompatible)
(
sfunc = array_append, -- 每行的操作函数,将本行append到数组里
stype = anycompatiblearray, -- 聚集后返回数组类型
initcond = '{}' -- 初始化空数组
);