xml 字符串连接的 tsql - 它是如何工作的

tsql for xml string concat - How it works

我有以下运行良好的代码:

    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() 是什么东西?类似于...select 方法?它有什么作用?任何参考链接也将不胜感激!

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

对于某些 blogs/links 查看 Aaron Bertrand's post or Adam Machanic's 还要注意 STRING_AGG SQL2017 中的新函数

您使用 FOR XML PATH 将 table 转换为 XML。 XML 数据由具有两个参数的 XML data type in SQL Server and it is possible to process a list of different methods on this data type. One of these methods is a value method 表示:XQuery 和数据类型。该方法允许您将 XML 中的数据转换为其他格式(在您的情况下为 varchar)。