需求
需要將表格數(shù)據(jù)的備注信息還有價(jià)格信息拼接成字符串
select FeeDesc,APAmt,DocNo from ST_PayableRefDocs where DocNo = 'PM-180929-088'

了解STUFF函數(shù)
利用STUFF將返回結(jié)果集 拼接成字符串
STUFF ( character_expression , start , length , character_expression )
character_expression由字符數(shù)據(jù)組成的表達(dá)式。character_expression 可以是常量、變量,也可以是字符或二進(jìn)制數(shù)據(jù)的列??梢郧短鬃址瘮?shù)。start是一個(gè)整形值,指定刪除和插入的開始位置。如果 start 或 length 是負(fù)數(shù),則返回空字符串。如果 start 比第一個(gè) character_expression 長(zhǎng),則返回空字符串。length是一個(gè)整數(shù),指定要?jiǎng)h除的字符數(shù)。如果 length 比第一個(gè) character_expression 長(zhǎng),則最多刪除到最后一個(gè) character_expression 中的最后一個(gè)字符。返回類型如果 character_expression 是一個(gè)支持的字符數(shù)據(jù)類型,則返回字符數(shù)據(jù)。如果 character_expression 是一個(gè)支持的 binary 數(shù)據(jù)類型,則返回二進(jìn)制數(shù)據(jù)。
示例
下例通過在第一個(gè)字符串 (123456) 中刪除從第二個(gè)位置(字符 b)開始的兩個(gè)字符,然后在刪除的起始位置插入第二個(gè)字符串,創(chuàng)建并返回一個(gè)字符串。
SELECT STUFF('123456', 2, 2, '789')
結(jié)果
1789456
實(shí)現(xiàn)結(jié)果
實(shí)現(xiàn)STUFF 函數(shù)
select str = STUFF((SELECT DISTINCT( '我是分隔符1' + '拼接參數(shù)1' + '拼接參數(shù)2' +'我是分隔符2') FROM Table t WHERE "自定義條件" FOR XML PATH('')),1, 1, '')
實(shí)現(xiàn)語句
select str = STUFF((SELECT DISTINCT( ',' + FeeDesc + Rmrk +'\n') FROM ST_PayableRefDocs s WHERE s.DocNo='PM-170224-054' FOR XML PATH('')),1, 1, '')
得到結(jié)果
USB 64GB115.00 \n ,多USB插口45.00 \n ,空氣清新劑25.90 \n ,配鑰匙35.00 \n ,衛(wèi)生紙37.80 \n