Hive学习笔记:字符串拼接
工作中需要合并区号与号码,因两个字段均为数值,无法直接使用 “+” 进行拼接,需要通过其他方法。
一、concat拼接
concat
将多个字段(字段类型可不相同)拼接起来。
使用语法为:
-- 语法
concat(string a, int b, float c)
-- 拼接多个字段
select concat('aa', 100, 5.5) from table_name;
-- 按分隔符拼接
select concat('aa', '-', 100, '-', 5.5);
-- 计算每个类别占比
select class,
concat(round(count(1)*100.0/total, 2), '%') as rate
from table_name
group by class;
二、concat_ws拼接
concat_ws
使用分隔符拼接,实现列转行。
使用语法为:
-- 分隔符、拼接字段
-- 必须为字符串类型
concat_ws(seperator, string a, string b, string c...)
-- 拼接
select concat_ws('-', 'aa', string(100), string(5.5));
-- 与group by结合实现列转行
select class,
concat_ws('-', collect_list(cast(score as string)))
from table_name
group by class;
三、cast转换类型
cast
将某个列转换为指定类型。
cast(values as type)
cast(score as string) -- int to string
四、collect_set 与 collect_list
常与 group by
结合使用,将一个字段元素形成一个集合(元素去重,类似于 Python
中的 set 集合)、列表(不去重)。
与 concat_ws
结合,即将元素以指定分隔符拼接成字符串。
参考链接:hive字符串拼接常用方法