FOR XML PATH(' ') 是什么意思?

What is the meaning of FOR XML PATH(' ')?

是什么意思
FOR XML PATH('')?

代表什么。因为它没有根节点。

来自MSDN

If you specify a zero-length string, the wrapping element is not produced.

(' ' 失败,所以我假设你的意思是一个空字符串,而不是单个 space).

这与根元素无关,这就是 root 的作用。这只是关于 wrapping 元素。

似乎对"Root"和"Element"有点混淆。在 XML 中,根是树顶部的单个节点。

如果我们指定 FOR XML PATH,后面没有任何内容,那么我们会得到一组 XML 个元素,称为 "Row"。这是默认名称。

USE AdventureWorks2016CTP3;
GO

SELECT BusinessEntityID, FirstName, LastName
    FROM Person.Person
    WHERE BusinessEntityID BETWEEN 14500 AND 14502
    FOR XML PATH;

我们可以像这样为封闭的 XML 元素指定一个不同的名称。

SELECT BusinessEntityID, FirstName, LastName
    FROM Person.Person
    WHERE BusinessEntityID BETWEEN 14500 AND 14502
    FOR XML PATH('Person');

如果我们希望 XML 元素包含在顶级根元素中,我们可以这样指定。

SELECT BusinessEntityID, FirstName, LastName
    FROM Person.Person
    WHERE BusinessEntityID BETWEEN 14500 AND 14502
    FOR XML PATH('Person'),
    ROOT('People');

为元素名称指定一个空字符串,导致它忽略封闭的 XML 元素。这似乎是一件非常奇怪的事情。我无法想象为什么会有人想要那样做。

SELECT BusinessEntityID, FirstName, LastName
    FROM Person.Person
    WHERE BusinessEntityID BETWEEN 14500 AND 14502
    FOR XML PATH('');

但是联机丛书确实说这是正确的行为。请参阅 FOR XML 子句的基本语法 > https://msdn.microsoft.com/en-gb/library/ms190922.aspx > 参数 > PATH。

If you provide an empty string (FOR XML PATH ('')), no wrapper element is generated.