zoukankan      html  css  js  c++  java
  • oracle的wm_concat()和mysql的group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别

    前言

    标题几乎已经说的很清楚了,在oracle中,concat()函数和 “ || ” 这个的作用是一样的,是将不同列拼接在一起;那么wm_concat()是将同属于一个组的(group by)同一个字段拼接在一起变成一行。mysql是一样的,只不过mysql用的是group_concat()这个函数,用法是一样的,这里就不过多介绍了。大家可以直接戳这篇文章 了解 浅析MySQL中concat以及group_concat的使用

    这里我就以oracle介绍为主了,mysql同样的方法使用,就是换一个函数就是了。

    wm_concat()和concat()具体的区别

    oracle中concat()的使用 和 oracle中  “ || ” 的使用

    这两个都是拼接字段或者拼接字符串的功能。

    oracle中:

    concat只能连接两个字符串或者两个字段,|| 可以多次使用,拼接n个字符串或者字段。

    
    select concat('aaa','bbb') from dual /*结果为:aaabbb*/
    select 'aaa'||'bbb'||'ccc'||'ddd' from dual /*结果为:aaabbbcccddd*/

    如果concat()拼接多个话,就会报错,

     

    mysql中

    concat()的使用,是可以连接多个字符串或者字段的。

    select concat('aaa','bbb','ccc','ddd') from dual  /*mysql中执行 结果为:aaabbbcccddd*/

    wm_concat()的使用

    我看了大多数博客对wm_concat()这个个函数的介绍,我觉得都介绍的不是很完美,他们都是简单的说 这个是合并列的函数,但是我总结的概括为:把同组的同列字段合并变为一行(会自动以逗号分隔)。什么意思呢,举个例子呗。

    现在我有一张成绩表,如图,

    stuid 同学学号         coursename 课程名称            score 课程成绩

    说明一下,设计成绩表的时候,这里的coursename最好是设计成courseid,和课程表去关联,但是这里我就是测试,为了更简单的表达效果,所以这里暂时就以课程名称来设计了,希望大神不要喷我设计的表有问题哈,我数据库设计表也还是挺厉害的勒,嘿嘿,自恋一下。

     问题:现在要将同一个同学的所有课程成绩以一行展示,sql怎么写呢?

    
    /*简单的合并同一个同学的课程*/
    select stuid,wm_concat(coursename)
    from stu_score
    group by stuid

    我们再优化一下SQL,将成绩也放进去

    /*同一个同学的课程+成绩*/
    select stuid,wm_concat(coursename || '(' || score||')')
    from stu_score
    group by stuid

     如果不想用逗号分隔,可以用replace函数替换逗号为你想要的分隔符号,

    /*同一个同学的课程+成绩,指定想要的分隔符*/
    select stuid,replace(wm_concat(coursename || '(' || score||')'),',','---')
    from stu_score
    group by stuid

    mysql是一样的用法,把wm_concat 换成 group_concat()就可以啦,具体可以参考这篇文章的使用:浅析MySQL中concat以及group_concat的使用

    不知道大家学会这个wm_concat()这个函数的用法了吗


    参考文章:

    https://www.cnblogs.com/qianyuliang/p/6649983.html

    https://blog.csdn.net/Mary19920410/article/details/76545053

    https://blog.csdn.net/u012027874/article/details/78505529

    感谢原作者的分享,让技术人能够更快的解决问题

  • 相关阅读:
    还在使用golang 的map 做Json编码么?
    Golang 性能测试(2) 性能分析
    golang 性能测试 (1) 基准性能测试
    消息队列 NSQ 源码学习笔记 (五)
    消息队列 NSQ 源码学习笔记 (四)
    消息队列 NSQ 源码学习笔记 (三)
    消息队列 NSQ 源码学习笔记 (二)
    消息队列 NSQ 源码学习笔记 (一)
    你不知道的空格
    Supervisor 使用和进阶4 (Event 的使用)
  • 原文地址:https://www.cnblogs.com/jalenFish/p/14099022.html
Copyright © 2011-2022 走看看