我有以下代码效果很好:
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()的东西是什么?类似...选择方法?它有什么作用?任何参考链接也将不胜感激!
FOR XML
将返回xml datatype;.value(...,...)
拉出XML值并将其转换为已定义的数据类型。在您的情况下,root节点('。')中的所有内容都转换为varchar(max)
有关某些博客/链接,请查看Aaron Bertrand的帖子或Adam Machanic's也要注意STRING_AGG
SQL2017中的新功能
您使用FOR XML PATH
将表转换为XML。XML数据由SQL Server中的XML数据类型表示,可以处理此数据类型上不同方法的列表。这些方法之一是具有两个参数的值方法:XQUERY和数据类型。该方法允许您将XML中的数据转换为其他格式(在您的情况下为VARCHAR)。