2017-09-25 91 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)。