sql逗號合並
A. sql Server如何將Id相同的欄位合並,並且以逗號隔開
需要用到stuff函數:
例:
id name
1 張三
1 李四
指游 2 王五
2 趙六
結果:
Id name
1 張三,李四
2 王五,趙六念逗旁
創建測試表及插入數據:
createtabletest
(idint,
namevarchar(10))
insertintotestvalues(1,'張三')
insertintotestvalues(1,'李四')
insertintotestvalues(2,'王五')
insertintotestvalues(2,'趙六')
執行語仔橡句:
selectid,stuff((select','+namefromtest
wherea.id=idforxmlpath('')),1,1,'')asname
fromtestasagroupbyid
執行結果截圖:
B. sql查詢結果逗號拼接出來
--這個與欄位的類型的長度關系很大,不然出來ckid中間的空格太長不好看
createtabletable1
(
midchar(2),
qidchar(5),
ckidchar(5)
)
insertintotable1
select'A1','KD001','ck001'unionall
select'A1','KD001','ck003'unionall
select'B1','QS123','cd111'unionall
select'B1','QS123','cd112'unionall
select'C1','RT001','rt115'unionall
select'C1','RT001','cf001'unionall
select'C1','RS156','yu116'
--使用forxmlpath
selecta.mid,a.qid,(selectckid+','fromtable1bwherea.mid=b.midanda.qid=b.qidforxmlpath(''))ckidfromtable1agroupbya.mid,a.qid
--或者下面這個使用stuffforxmlpath
selecta.mid,a.qid,stuff((select','+ckidfromtable1bwherea.mid=b.midanda.qid=b.qidforxmlpath('')),1,1,'')ckidfromtable1agroupbya.mid,a.qid
C. sql 如何將查出來的一列用逗號拼接
寫個存儲過程,聲明一個結果用的varchar變數,用游標把讀出來的字脊吵段拼出來,照著下邊的改改就行了
create proc [dbo].[teststr]asbegin declare @result VARCHAR(max)--用來處理結果的變數 declare @resultt VARCHAR(10) set @result=''
begin try deallocate tmpc end try begin catch end catch
declare tmpc cursor for select deviceid from t_carinfo Open tmpc --循環蠢冊並提取記錄 Fetch Next From tmpc Into @resultt--取第一條記錄存入@resultt中 While ( @@Fetch_Status=0 ) begin set @result=@result+','+@resultt Fetch Next From tmpc into @resultt----下一條 end --關閉游標 Close tmpc --釋放游帶野宏標 Deallocate tmpc print substring(@result,2,len(@result)-1)--這里就是把第一個逗號去掉,取全部的數據end
D. pgsql 如何把多行字元串用逗號拼接起來
可以通過「||」拼接的方式實現兄蔽頃.
sql:select t.name||','||t.age from tablename t;
解釋:oracle中用「||」來進行字元串拼羨陸接,上面的就會出現如並拿「zhangsan,15」的樣式。