XML字符串Concat的TSQL-其工作原理



我有以下代码效果很好:

    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)。

最新更新