hive拼接和group_concat


拼接函数

concat(STRING|BINARY a, STRING|BINARY b…)

Returns the string or bytes resulting from concatenating the strings or bytes passed in as parameters in order. For example, concat(‘foo’, ‘bar’) results in ‘foobar’. Note that this function can take any number of input strings.
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

select concat('abc','def','gh',123)
abcdefgh123

concat_ws(STRING sep, STRING a, STRING b…), concat_ws(STRING sep, Array)

和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符~(concat_ws就是concat with separator)

语法:concat_ws(separator, str1, str2, …)

说明:第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。

select concat_ws('abc','def','gh')
defabcgh

group_concat

group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )

select userid,bankid,group_concat(cast(creditlimit as string))
from vdm_fin.cc_user_bill_0724
group by userid,bankid
limit 100;

这里写图片描述

hive实现相同的功能:

SELECT id,
concat_ws('|', collect_set(str)) 
FROM t  
GROUP BY id;

主意:collect_set 只能返回不重复的集合
若要返回带重复的要用collect_list

猜你喜欢

转载自blog.csdn.net/changzoe/article/details/81181820