tsql for xml string concat - 它是如何工作的

时间:2017-09-25 08:47:12

标签: sql string tsql aggregate-functions string-concatenation

我有以下代码,效果很好:

    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()的东西?有点像...选择方法?它有什么作用?任何参考链接也将受到赞赏!

2 个答案:

答案 0 :(得分:1)

FOR XML将返回XML数据类型; .value(...,...)拉出XML值并将其转换为定义的数据类型。在您的情况下,根节点('。')中的所有内容都转换为varchar(max)

对于某些博客/链接,请查看Aaron Bertrand's postAdam Machanic's,同时注意STRING_AGG SQL2017中的新功能

答案 1 :(得分:1)

您使用FOR XML PATH将表格转换为XML。 XML数据由SQL Server中的XML data type表示,可以在此数据类型上处理不同methods的列表。其中一个方法是value method,它有两个参数:XQuery和Data类型。该方法允许您将XML中的数据转换为其他格式(在您的情况下为varchar)。