需求
需要將表格數據的備注信息還有價格信息拼接成字符串
select FeeDesc,APAmt,DocNo from ST_PayableRefDocs where DocNo = 'PM-180929-088'
了解STUFF函數
利用STUFF將返回結果集 拼接成字符串
STUFF ( character_expression , start , length , character_expression )
character_expression
由字符數據組成的表達式斤寂。character_expression 可以是常量窖壕、變量葬馋,也可以是字符或二進制數據的列÷肽停可以嵌套字符串函數。start
是一個整形值糖儡,指定刪除和插入的開始位置伐坏。如果 start 或 length 是負數,則返回空字符串握联。如果 start 比第一個 character_expression 長桦沉,則返回空字符串。length
是一個整數金闽,指定要刪除的字符數纯露。如果 length 比第一個 character_expression 長,則最多刪除到最后一個 character_expression 中的最后一個字符代芜。返回類型
如果 character_expression 是一個支持的字符數據類型埠褪,則返回字符數據。如果 character_expression 是一個支持的 binary 數據類型挤庇,則返回二進制數據钞速。
示例
下例通過在第一個字符串 (123456) 中刪除從第二個位置(字符 b)開始的兩個字符,然后在刪除的起始位置插入第二個字符串嫡秕,創(chuàng)建并返回一個字符串渴语。
SELECT STUFF('123456', 2, 2, '789')
結果
1789456
實現結果
實現STUFF 函數
select str = STUFF((SELECT DISTINCT( '我是分隔符1' + '拼接參數1' + '拼接參數2' +'我是分隔符2') FROM Table t WHERE "自定義條件" FOR XML PATH('')),1, 1, '')
實現語句
select str = STUFF((SELECT DISTINCT( ',' + FeeDesc + Rmrk +'\n') FROM ST_PayableRefDocs s WHERE s.DocNo='PM-170224-054' FOR XML PATH('')),1, 1, '')
得到結果
USB 64GB115.00 \n ,多USB插口45.00 \n ,空氣清新劑25.90 \n ,配鑰匙35.00 \n ,衛(wèi)生紙37.80 \n