我有以下代码,效果很好:
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 :(得分:1)
FOR XML
将返回XML数据类型; .value(...,...)
拉出XML值并将其转换为定义的数据类型。在您的情况下,根节点('。')中的所有内容都转换为varchar(max)
对于某些博客/链接,请查看Aaron Bertrand's post或Adam Machanic's,同时注意STRING_AGG
SQL2017中的新功能
答案 1 :(得分:1)
您使用FOR XML PATH
将表格转换为XML。 XML数据由SQL Server中的XML data type表示,可以在此数据类型上处理不同methods的列表。其中一个方法是value method,它有两个参数:XQuery和Data类型。该方法允许您将XML中的数据转换为其他格式(在您的情况下为varchar)。