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 |
+-----------+