最近的處理表資料的程序中, 遇到了一個問題:如何將一個表的一個列的多行內容拼接成一行,以逗號分隔的方式;
將下串列(tableA)資料
| name | code |
|---|---|
| bob | 10 |
| bob | 20 |
| bobr | 30 |
處理為
| name | code |
|---|---|
| bob | 10,20,30 |
找到一種比較簡單方便的方法吧,現在大體總結一下,供大家共同學習,
select
name,
stuff(
( select ','+ code from tableA where name = tb.name for xml path(''))
,1,1,'')
as code
from tableA tb group by tba.name
這里使用了stuff以及for xml path,在上面這句sql中的作用:
for xml path(’’)
這句是把得到的內容以XML的形式顯示,
stuff( ‘,’+ 拼接的字串 , 1, 1, ‘’)
這句是把拼接的內容的第一個“,”去掉
stuff:
1、作用
stuff( str1 , Index, length, str2)
將 str1 中自Index(SQL中都是從1開始,而非0)起,洗掉length個字符,然后用 str2 替換刪掉的字符,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/281705.html
標籤:其他
上一篇:Flume
下一篇:資料庫原理實驗報告(一)
