1、concat
concat() 函数用于将多个字符串连接成一个字符串。
concat(string s1, string s2, string s3,…)表示通过s1、s2和s3连接一起
举例:
+----+--------+
| id | name |
+----+--------+
| 1 | city |
+----+--------+
CONCAT(id,’:’,name) = 1:city
2、concat_ws
concat_ws() 指定参数之间的分隔符
concat_ws(separator,str1,str2,…)中第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为null,则结果为null。函数会忽略任何分隔符参数后的null 值。但是concat_ws()不会忽略任何空字符串。 (然而会忽略所有的 null)
举例:数据如1
concat_ws(’_’,id,name)
结果:1_city
3、group_concat函数
group_concat() 函数返回一个字符串结果,该结果由分组中的值连接组合而成
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
[SEPARATOR str_val])
在 MySQL 中,你可以得到表达式结合体的连结值。通过使用 DISTINCT 可以排除重复值。如果希望对结果中的值进行排序,可以使用 ORDER BY 子句。
SEPARATOR 是一个字符串值,它被用于插入到结果值中。缺省为一个逗号 (","),可以通过指定 SEPARATOR “” 完全地移除这个分隔符。
可以通过变量 group_concat_max_len 设置一个最大的长度。在运行时执行的句法如下: SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;
如果最大长度被设置,结果值被剪切到这个最大长度。如果分组的字符过长,可以对系统参数进行设置:SET @@global.group_concat_max_len=40000;
举例:
+---------+---------+-----------+
| uid | age | address |
+---------+---------+-----------+
| 100001 | 21 | 深圳 |
| 100001 | 22 | 青岛 |
| 100002 | 23 | 重庆 |
| 100002 | 24 | 上海 |
+---------+---------+-----------+
select uid,group_concat(distinct age order by age desc SEPARATOR '_')
from user_info where uid in('100001','100002') group by uid;
结果
100001 21_22
100002 23_24
4、collect_set
concat_ws常常结合group by与collect_set使用
concat_ws(SEPARATOR ,collect_set(column))与group_concat()函数作用相似
因为hive版本问题,低版本可能没有group_concat函数,只能用其他来代替。
.
.
.
.
.
下面是我的公众号,收集了现在主流的大数据技能和架构,欢迎大家一起来学习交流。