最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL?Server實(shí)現(xiàn)group_concat函數(shù)的詳細(xì)舉例

 更新時(shí)間:2023年11月10日 10:08:31   作者:有夢(mèng)想的菜  
這篇文章主要給大家介紹了關(guān)于SQL?Server實(shí)現(xiàn)group_concat函數(shù)的詳細(xì)舉例,GROUP_CONCAT函數(shù)可以拼接某個(gè)字段值成字符串,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、mysql數(shù)據(jù)庫(kù)group_concat函數(shù)

情景:每個(gè)人有多張銀行卡,現(xiàn)在需統(tǒng)計(jì)出每個(gè)人的銀行卡并展示成一行,表單如下:

實(shí)現(xiàn)sql:

group_concat() 函數(shù)將組中的字符串連接成為具有各種選項(xiàng)的單個(gè)字符串。

select name,group_concat(bankCard  separator ',') as bankCards from uf_yhk group by name

separator 指定在組中的值之間插入的文字值,默認(rèn) ' , '

二、SQL Server實(shí)現(xiàn)group_concat函數(shù)

實(shí)現(xiàn)sql:

select name,
       STUFF(
       (select ',' + a.bankCard from (select id,name,bankCard from uf_yhk) a where a.name = b.name FOR XML PATH('') )
       ,1,1,'') as bankCards
 from (select id,name,bankCard from uf_yhk)  b  group by name 

原理分析:

2.1 FOR XML PATH('')函數(shù),使結(jié)果集轉(zhuǎn)為XML文檔形式

select id,name,bankCard from uf_yhk FOR XML PATH(''); 
<id>1</id><name>張三</name><bankCard>500301</bankCard>
<id>2</id><name>李四</name><bankCard>500302</bankCard>
<id>3</id><name>張三</name><bankCard>500303</bankCard>
<id>4</id><name>李四</name><bankCard>500304</bankCard>
<id>5</id><name>王五</name><bankCard>500305</bankCard>
<id>6</id><name>張三</name><bankCard>500306</bankCard>

2.2 轉(zhuǎn)換成單字符串

select ',' + a.bankCard   from (select id,name,bankCard from uf_yhk) a where a.name = '張三' FOR XML PATH('') 
,500301,500303,500306

2.3 STUFF(string,start,length,substring)用于替換字符串中的子字符串。

  • string - 作為子字符串替換目標(biāo)的字符串表達(dá)式。
  • start - 替換的起點(diǎn),指定為正整數(shù)。從字符串開(kāi)頭開(kāi)始的字符數(shù),從 1 開(kāi)始計(jì)數(shù)。允許的值為 0 到字符串的長(zhǎng)度。要追加字符,請(qǐng)指定 0 的開(kāi)頭和 0 的長(zhǎng)度??兆址蚍菙?shù)字值被視為 0。
  • length - 要替換的字符數(shù),指定為正整數(shù)。要插入字符,請(qǐng)將長(zhǎng)度指定為 0。要在開(kāi)始后替換所有字符,請(qǐng)指定大于現(xiàn)有字符數(shù)的長(zhǎng)度??兆址蚍菙?shù)字值被視為 0。
  • substring - 一個(gè)字符串表達(dá)式,用于替換由其起始點(diǎn)和長(zhǎng)度標(biāo)識(shí)的子字符串。可以比它替換的子字符串更長(zhǎng)或更短??梢允强兆址?。
select STUFF(
            (select ',' + a.bankCard   from (select id,name,bankCard from uf_yhk) a where a.name = '張三' FOR XML PATH(''))
        ,1,1,'')

2.4通過(guò)子查詢(xún)得到拼接后的數(shù)據(jù)

注意看2.2我限制了條件a.name = '張三' 就相當(dāng)于a.name = b.name

最后 group by name ,就大功告成。

三、Oracle數(shù)據(jù)庫(kù)實(shí)現(xiàn)

1.vm_concat函數(shù):

select vm_concat('需要拼接的列名稱(chēng)','拼接符號(hào)') from table_name group by '聚合的列名'

注意:高版本oracle不建議使用

2.listagg() within函數(shù) :

SELECT LISTAGG('需要拼接的列名稱(chēng)','拼接符號(hào)') within group (order by '排序的列名') from table_name

總結(jié)

到此這篇關(guān)于SQL Server實(shí)現(xiàn)group_concat函數(shù)的文章就介紹到這了,更多相關(guān)SQLServer實(shí)現(xiàn)group_concat函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

彭阳县| 景德镇市| 静宁县| 秭归县| 高唐县| 高淳县| 满城县| 佳木斯市| 息烽县| 池州市| 洪雅县| 永济市| 大同市| 沈阳市| 道真| 海盐县| 泗水县| 左贡县| 吐鲁番市| 奉贤区| 黑龙江省| 耒阳市| 九龙城区| 收藏| 峨眉山市| 丰顺县| 驻马店市| 德安县| 马龙县| 唐河县| 台南市| 奉新县| 中山市| 贡山| 隆回县| 侯马市| 锦屏县| 依兰县| 菏泽市| 炉霍县| 福清市|