先介绍一下concat函数:
concat函数用于将两个字符串连接成一个字符串
concat_ws也是将两个字符串连接成一个字符串,concat_ws需要指定分隔符
区别在于:
concat所要连接的字符串中出现了null,则整体连接结果为null
concat_ws则不然,只要有一个字符串不为null,就不会返回null,concat_ws需要指定分隔符
concat语句:
select concat('yun','ze');
执行结果:
yunze
select concat('yun','ze',null);
执行结果:
null
concat_ws语句:
select cancat_ws('','yun','ze',null);
执行结果:
yunze
select concat_ws('.','baidu','com');
执行结果:
baidu.com
select concat('.',array('www','baidu','com'));
执行结果:
www.baidu.com
collect_set是将某列元素转化为数组返回
注意:collect_set无序且会去重
select collect_set(t1.name) name
from person_info t1;
执行结果:
["张三","李四","王五","赵六"]
将collect_set与concat_ws结合起来使用:
select concat_ws('|',collect_set(t1.name)) name
from person_info t1;
执行结果:
张三|李四|王五|赵六
扩展:
select t1.base,
concat_ws('&',collect_set(t1.name)) as name
from
(select
name,concat(constellation,',',blood_type)
as base
from db_2021213776.person_info)t1
group by t1.base;
执行结果: