GROUP_CONCAT
📄字数 1.1K
👁️阅读量 加载中...
功能描述
将同一个分组中的非 NULL 值连接起来,返回一个字符串结果。
语法格式
sql
GROUP_CONCAT([ALL | DISTINCT] expr[, expr ...]
[order_by_clause]
[SEPARATOR delimiter])
[OVER([analytic_clause])]输入参数
expr:被连接的列,VARCHAR类型,或能隐式转换为VARCHAR类型的其他类型。order_by_clause:可选的排序子句,对结果中的值进行排序,排序子句的详细说明请参考 排序子句。delimiter:可选的分隔符,默认使用逗号(,)作为分隔符;要显式指定分隔符,使用SEPARATOR后跟字符串常量值,分隔符可以是动态参数(如预编译语句参数)。analytic_clause:可选的分析子句,支持分组子句,排序子句以及范围子句,分析子句的详细说明请参考 analytic_clause。
提示
GROUP_CONCAT函数可以在OVER和order_by_clause子句中同时指定排序,此时排序结果以GROUP_CONCAT中的order_by_clause子句中的排序结果为准。- 排序子句只支持
简单表达式、复杂表达式和函数表达式,不支持布尔表达式、CASE表达式等。 GROUP_CONCAT支持多参数聚合,最大支持的参数个数和GROUP_CONCAT函数的结果允许的最大记录长度相关,最大记录长度为60000字节。
输出结果
返回 VARCHAR 类型,输入参数全为 NULL 时,输出结果为 NULL;否则函数将排除 NULL 值,对非 NULL 值进行拼接。
提示
GROUP_CONCAT()函数的结果允许的最大记录长度受系统参数 GROUP_CONCAT_MAX_LEN 的影响,GROUP_CONCAT_MAX_LEN的取值范围为:[4, 60000)字节,默认值为:1024字节。- 系统参数
GROUP_CONCAT_MAX_LEN的作用域为全局,暂不支持会话级设置。所以一旦修改值,会影响当前和之后连接的用户使用该值。
示例
sql
SQL> CREATE TABLE tab_test_group_concat(column1 INTEGER, column2 VARCHAR);
SQL> INSERT INTO tab_test_group_concat VALUES(1, 'sada')(10, 'da')(4, 'a')(11, 'a');
SQL> SELECT * FROM tab_test_group_concat;
+---------+---------+
| COLUMN1 | COLUMN2 |
+---------+---------+
| 1 | sada |
| 10 | da |
| 4 | a |
| 11 | a |
+---------+---------+
SQL> SELECT GROUP_CONCAT(column2) FROM tab_test_group_concat GROUP BY column2;
+-------+
| EXPR1 |
+-------+
| da |
| sada |
| a,a |
+-------+
SQL> SELECT GROUP_CONCAT(DISTINCT column2) FROM tab_test_group_concat ORDER BY column1;
+-----------+
| EXPR1 |
+-----------+
| a,da,sada |
+-----------+