问题描述

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 = '{}' -- 初始化空数组
);

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐