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

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

  • 相关阅读:
    第三天-基本数据类型 int bool str
    第二天-while循环 格式化输出 运算符 编码
    第一天-python基础
    Mysql
    Mysql
    Mysql
    Mysql
    Mysql
    Mysql
    Php
  • 原文地址:https://www.cnblogs.com/jalenFish/p/14099022.html
Copyright © 2011-2022 走看看