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.
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.