日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 类似wm concat_oracle的wm_concat()和mysql的group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别...

發(fā)布時(shí)間:2025/3/15 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 类似wm concat_oracle的wm_concat()和mysql的group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

標(biāo)題幾乎已經(jīng)說的很清楚了,在oracle中,concat()函數(shù)和 “ || ” 這個(gè)的作用是一樣的,是將不同列拼接在一起;那么wm_concat()是將同屬于一個(gè)組的(group by)同一個(gè)字段拼接在一起變成一行。mysql是一樣的,只不過mysql用的是group_concat()這個(gè)函數(shù),用法是一樣的,這里就不過多介紹了。大家可以直接戳這篇文章 了解?淺析MySQL中concat以及group_concat的使用

這里我就以oracle介紹為主了,mysql同樣的方法使用,就是換一個(gè)函數(shù)就是了。

wm_concat()和concat()具體的區(qū)別

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

這兩個(gè)都是拼接字段或者拼接字符串的功能。

oracle中:

concat只能連接兩個(gè)字符串或者兩個(gè)字段,|| 可以多次使用,拼接n個(gè)字符串或者字段。

select concat('aaa','bbb') from dual /*結(jié)果為:aaabbb*/

select 'aaa'||'bbb'||'ccc'||'ddd' from dual /*結(jié)果為:aaabbbcccddd*/

如果concat()拼接多個(gè)話,就會(huì)報(bào)錯(cuò),

mysql中

concat()的使用,是可以連接多個(gè)字符串或者字段的。

select concat('aaa','bbb','ccc','ddd') from dual /*mysql中執(zhí)行 結(jié)果為:aaabbbcccddd*/

wm_concat()的使用

我看了大多數(shù)博客對(duì)wm_concat()這個(gè)個(gè)函數(shù)的介紹,我覺得都介紹的不是很完美,他們都是簡單的說 這個(gè)是合并列的函數(shù),但是我總結(jié)的概括為:把同組的同列字段合并變?yōu)橐恍?會(huì)自動(dòng)以逗號(hào)分隔)。什么意思呢,舉個(gè)例子唄。

現(xiàn)在我有一張成績表,如圖,

stuid 同學(xué)學(xué)號(hào)? ? ? ? ?coursename 課程名稱? ? ? ? ? ? score 課程成績

說明一下,設(shè)計(jì)成績表的時(shí)候,這里的coursename最好是設(shè)計(jì)成courseid,和課程表去關(guān)聯(lián),但是這里我就是測試,為了更簡單的表達(dá)效果,所以這里暫時(shí)就以課程名稱來設(shè)計(jì)了,希望大神不要噴我設(shè)計(jì)的表有問題哈,我數(shù)據(jù)庫設(shè)計(jì)表也還是挺厲害的勒,嘿嘿,自戀一下。

問題:現(xiàn)在要將同一個(gè)同學(xué)的所有課程成績以一行展示,sql怎么寫呢?

/*簡單的合并同一個(gè)同學(xué)的課程*/

select stuid,wm_concat(coursename)

from stu_score

group by stuid

我們再優(yōu)化一下SQL,將成績也放進(jìn)去

/*同一個(gè)同學(xué)的課程+成績*/

select stuid,wm_concat(coursename || '(' || score||')')

from stu_score

group by stuid

如果不想用逗號(hào)分隔,可以用replace函數(shù)替換逗號(hào)為你想要的分隔符號(hào),

/*同一個(gè)同學(xué)的課程+成績,指定想要的分隔符*/

select stuid,replace(wm_concat(coursename || '(' || score||')'),',','---')

from stu_score

group by stuid

mysql是一樣的用法,把wm_concat 換成 group_concat()就可以啦,具體可以參考這篇文章的使用:淺析MySQL中concat以及group_concat的使用

不知道大家學(xué)會(huì)這個(gè)wm_concat()這個(gè)函數(shù)的用法了嗎

參考文章:

感謝原作者的分享,讓技術(shù)人能夠更快的解決問題

本文分享 CSDN - 小小魚兒小小林。

如有侵權(quán),請聯(lián)系 support@oschina.cn 刪除。

本文參與“OSC源創(chuàng)計(jì)劃”,歡迎正在閱讀的你也加入,一起分享。

總結(jié)

以上是生活随笔為你收集整理的mysql 类似wm concat_oracle的wm_concat()和mysql的group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。