2017-09-25 93 views
0

我有下面的代碼效果很好:TSQL的XML字符串連接 - 它是如何工作

STUFF( ( 
         select 
          char(13)+'Item '+i.item+' : '--+char(13) +i.item_descr 
         from @itemlines i 
         where i.customer=main.customer 
         FOR XML PATH(''), TYPE 
        ).value('.','varchar(max)') 
       ,1,1, '') 

什麼是.value的()的東西?像一個...選擇方法?它有什麼作用?任何參考鏈接也將讚賞!

+0

看看[這個答案](https://stackoverflow.com/a/14374392/569436) –

回答

1

FOR XML將返回一個XML數據類型; .value(...,...)提取XML值並將其轉換爲定義的數據類型。在你的情況,一切都在根節點(「」)轉換爲varchar(最大)

對於一些博客/鏈接看Aaron Bertrand's postAdam Machanic's也留意STRING_AGG在SQL2017

1

您可以使用一個新功能FOR XML PATH將您的表格轉換爲XML。 XML數據在SQL Server中由XML data type表示,並且可以在此數據類型上處理不同methods的列表。其中一種方法是value method,它有兩個參數:XQuery和數據類型。該方法允許您將XML中的數據轉換爲其他格式(在您的情況下爲varchar)。