VastbaseG100

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

Menu

GROUP_CONCAT

功能描述

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

注意事项

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

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

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

  • 支持版本:

    • V2.2 Build 10(Patch No.7)及以上补丁版本。

语法格式

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

参数说明

  • expr

    需要组合的表达式。

  • unsigned_integer

    无符号整数。

  • col_name

    列名。

  • str_val

    分隔符。

兼容性

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

示例

1、创建兼容PostgreSQL的库db_pg,并进入。

CREATE DATABASE  db_pg  DBCOMPATIBILITY=  'PG';
\c  db_pg

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)