MySQL的group_concat聚集函数到HGDB的迁移

Posted 瀚高PG实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL的group_concat聚集函数到HGDB的迁移相关的知识,希望对你有一定的参考价值。

目录
环境
文档用途
详细信息

环境
系统平台:Linux x86-64 Red Hat Enterprise Linux 7
版本:4.5
文档用途
mysql的group_concat聚集函数返回带有来自一个组的连接的非NULL值的字符串结果,该函数通常与group by一起使用。

例如:

SELECT id, group_concat(city) from cities group by id

在瀚高数据库中暂时不支持group_concat聚集函数,需要通过自定义聚集函数实现。

详细信息
下面通过实例进行详细说明:

测试数据准备:

CREATE TABLE cities(id int,city varchar(10));

insert into cities values(1,'上海');

insert into cities values(2,'南京');

insert into cities values(2,'北京');

MySQL:

SELECT id, group_concat(city) as gpcity from cities group by id;

执行结果:

HGDB:

①自定义group_concat聚集函数

CREATE AGGREGATE group_concat(anyelement)

(

    sfunc = array_append, -- 每行的操作函数,将本行append到数组里

    stype = anyarray,    -- 聚集后返回数组类型

    initcond = ''     -- 初始化空数组

);

注:参数anyelement匹配任何类型,聚集后返回数组类型anyarray,该函数的功能是将每行的记录附加到数组里。

②group_concat(列名)为数组类型,需要用array_to_string函数将数组转换为字符串

SELECT id,array_to_string(group_concat(city),',') as gpcity from cities group by id;

注:MySQL中列名默认由逗号进行拼接,因此,HGDB中array_to_string函数的第二个参数传递逗号(,)

执行结果:

以上是关于MySQL的group_concat聚集函数到HGDB的迁移的主要内容,如果未能解决你的问题,请参考以下文章

mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格

MySQL的GROUP_CONCAT函数

Mysql从入门到入魔——5. 聚集分组子查询

Oracle的函数WM_CONCAT,在PostgreSQL中具有相同功能的函数名称是啥?

mysql—group_concat函数

解决mysql中group_concat长度限制的方案