VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

GROUP_CONCAT

功能描述

GROUP_CONCAT函数用于将group by产生的同一个分组中的值连接起来。

注意事项

  • 该功能仅在数据库兼容模式为MySQL或PostgreSQL时能够使用(即创建DB时DBCOMPATIBILITY='B'或者DBCOMPATIBILITY='PG'),在其他数据库兼容模式下不能使用该特性。

    在PG兼容模式下仅V2.2 Build 10(Patch No.7)及以上补丁版本支持该特性。

  • 需具备该函数访问权限。例如group_concat函数如果位于pg_catalog模式下,用户首先需要具备pg_catalog模式的usage权限,然后具备group_concat函数的execute权限。

  • 如果分组中的值为null,则返回值为null。

语法格式

GROUP_CONCAT([DISTINCT] expr [,expr ...]             
	[ORDER BY {unsigned_integer | col_name | expr}                 
		[ASC | DESC] [,col_name ...]]             
	[SEPARATOR str_val])

参数说明

  • [ DISTINCT ]

    从SELECT的结果集中删除所有重复的行,使结果集中的每行都是唯一的。

  • expr

    需要组合的表达式。

  • unsigned_integer

    无符号整数。

  • col_name

    列名。

  • str_val

    分隔符。

  • [ ASC | DESC ]

    ASC是指定列按升序排列(默认),DESC是指定列按降序排列。

兼容性

由于Vastbase中没有参数group_concat_max_len,根据客户现场使用情况,返回值类型为text或blob类型,返回值类型取决于输入参数是字符还是二进制。

示例

1、创建兼容MySQL的库db_mysql,并进入。

CREATE DATABASE  db_mysql  DBCOMPATIBILITY=  'B';
\c  db_mysql

2、创建测试表并插入测试数据。

create table contest(id1 int,id2 bigint,id3 smallint,id4 tinyint,id5 integer,id6 serial primary key);
insert into contest values(45,87948,55,48,789,2489);
insert into contest values(78,87948,55,48,789,25499);
insert into contest values(88,87948,55,48,789,54899);

3、查询验证。

select group_concat(id1,id2,id3,id4,id5,id6 order by id1) from contest group by id1;

结果显示如下:

    group_concat     
---------------------
 458794855487892489
 7887948554878925499
 8887948554878954899
(3 rows)