group_concat函数使用与陷阱

/ 数据库 / 0 条评论 / 4884浏览

group_concat

语法与使用

语法: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

作用: 使用group分组后,可以将组内非分组字段的值拼接起来,默认使用 ',' 拼接。使用起来非常方便

举例,如下表(t_city)

province city content
广东省 广州市 历史、文化、发展 都很不错,适合居住
广东省 佛山市
广东省 东莞市
广东省 深圳市
广东省 江门市
河南省 郑州市
河南省 驻马店市

SQL

 SELECT province , GROUP_CONCAT(city) AS citys FROM t_city GROUP BY province ;

SQL查询结果

province citys
广东省 广州市,佛山市,东莞市,深圳市,江门市
河南省 郑州市,驻马店市

支持数据库

已知支持 MySQL,Hive

遇到的陷阱

1.Hive中的陷阱, 默认连接符为 ', ' (注意是 逗号+空格),进行业务处理时一定要注意

2.int字段的连接陷阱。拼接的字段如果是int型,一定要转换成char再拼起来, 否则在你执行后返回不是字符串, 而是byte[]。 可以使用 CAST(field as char)函数转换

3.长度陷阱。用group_concat连接字段的时候是有长度限制的。可以使用group_concat_max_len系统变量,你可以设置允许的最大长度。

数据库 查询 设置
Hive - SET [SESSION | GLOBAL] group_concat_max_len = val;
MySQL show variables like 'group_concat_max_len' SET [SESSION | GLOBAL] group_concat_max_len = val;