当前位置:   article > 正文

SQL---行转列,列转行(concat,concat_ws,collect_set)_sql 里 列表 转换成字段的函数

sql 里 列表 转换成字段的函数

先介绍一下concat函数:

concat函数用于将两个字符串连接成一个字符串

concat_ws也是将两个字符串连接成一个字符串,concat_ws需要指定分隔符

区别在于:

concat所要连接的字符串中出现了null,则整体连接结果为null  

concat_ws则不然,只要有一个字符串不为null,就不会返回null,concat_ws需要指定分隔符

concat语句:

  1. select concat('yun','ze');
  2. 执行结果:
  3. yunze
  1. select concat('yun','ze',null);
  2. 执行结果:
  3. null

concat_ws语句: 

  1. select cancat_ws('','yun','ze',null);
  2. 执行结果:
  3. yunze
  1. select concat_ws('.','baidu','com');
  2. 执行结果:
  3. baidu.com
  1. select concat('.',array('www','baidu','com'));
  2. 执行结果:
  3. www.baidu.com

collect_set是将某列元素转化为数组返回 

注意:collect_set无序且会去重

  1. select collect_set(t1.name) name
  2. from person_info t1;
  3. 执行结果:
  4. ["张三","李四","王五","赵六"]

将collect_set与concat_ws结合起来使用:

  1. select concat_ws('|',collect_set(t1.name)) name
  2. from person_info t1;
  3. 执行结果:
  4. 张三|李四|王五|赵六

扩展:

  1. select t1.base,
  2. concat_ws('&',collect_set(t1.name)) as name
  3. from
  4. (select
  5. name,concat(constellation,',',blood_type)
  6. as base
  7. from db_2021213776.person_info)t1
  8. group by t1.base;

执行结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/568861
推荐阅读
  

闽ICP备14008679号