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 函数 将相同的键的多个单元格合并到一个单元格