天天看點

SQL SERVER用STUFF和FOR XML PATH合并行

原始資料如下

SQL SERVER用STUFF和FOR XML PATH合并行

首先通過FOR XML PATH擷取XML 元素字元串

以XML格式輸出查找結果

SELECT ',' + new_name
      FROM new_test1Base
      FOR XML PATH ('')
           

輸出:,123,123,445,445,asdf

SELECT ',' + new_name as m2
      FROM new_test1Base
      FOR XML PATH ('n1')
           

可以對XML元素增加命名标簽

輸出:,123,123,445,445,asdf

其次通過STUFF去掉開頭的逗号

SELECT texts = STUFF((
      SELECT ',' + new_name
      FROM new_test1Base
      FOR XML PATH ('')
	  ), 1, 1, '')
FROM new_test1Base
           

輸出如下:

SQL SERVER用STUFF和FOR XML PATH合并行

STUFF函數

字元串替代函數,4個參數

(字元串,開始位置->第一個元素為1,替代幾個,替代物)

最後連接配接key分組

SELECT new_name, texts = STUFF((
      SELECT ',' + new_name
      FROM new_test1Base t1
	  WHERE t1.new_name=t2.new_name
      FOR XML PATH ('')
	  ), 1, 1, '')
FROM new_test1Base t2
GROUP BY t2.new_name
           
SQL SERVER用STUFF和FOR XML PATH合并行
sql