专栏首页灵儿的笔记wm_concat()和group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别

wm_concat()和group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别

原标题: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()这个函数的用法了吗

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 简单介绍订单号或者流水号的生成方法

    一般订单号或者流水号等可能在一些平台会用到,然后我就简单的介绍一个我自己生成订单号和流水号的一个方法吧,如果程序有问题或者你有更好的生成办法,欢迎留言,留下你的...

    小小鱼儿小小林
  • HTML常用的颜色代码参考表|前端使用颜色必备

    如果嫌弃自己麻烦还要运行的,可以直接戳这个链接,我已经帮大家运行起来了,大家进去直接复制颜色代码即可

    小小鱼儿小小林
  • java读取excel文件单元格英文出现乱码问题的解决方法

    小编今天测试读取excel文件,并且取其中的几个单元格作为文件名称的时候,发现文件名出现了乱码,毫无疑问,肯定就是读取excel的时候,取出来就出现了乱码,如图...

    小小鱼儿小小林
  • CVPR 2019 行人检测新思路:高级语义特征检测取得精度新突破

    今天跟大家分享一篇昨天新出的CVPR 2019论文《High-level Semantic Feature Detection:A New Perspectiv...

    CV君
  • Array - 55. Jump Game

    Given an array of non-negative integers, you are initially positioned at the fir...

    用户5705150
  • 重庆推出区块链政务服务平台

    重庆区块链政务服务平台近日正式上线,这是重庆首次将支付宝区块链应用于政务服务领域。借由该平台,在重庆注册公司的时间可从十几天缩短到最快只要3天。

    源中瑞科技ruiecjo
  • Ajax与Controller数据交互-实例

    Remember_Ray
  • 在HashMap中将可变对象用作Key,需要注意什么?

    本文中我们将会讨论在Java HashMap中将可变对象用作Key。所有的Java程序员可能都在自己的编程经历中多次用过HashMap。那什么是HashMap呢...

    九州暮云
  • linux软件安装(一)——源码安装

    Linux软件简介 Linux上几乎所有的软件都经过了GPL授权,因此几乎所有的软件都会提供源码。 而一个软件要在Linux上执行,必须是二进制文件,因此...

    大闲人柴毛毛
  • 聊聊flink的RestartStrategies

    flink-core-1.7.1-sources.jar!/org/apache/flink/api/common/restartstrategy/Restar...

    codecraft

扫码关注云+社区

领取腾讯云代金券