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

时间:2016-05-06 13:13:47

标签: sql sql-server for-xml-path

是什么意思

FOR XML PATH('')?

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

2 个答案:

答案 0 :(得分:4)

关于" Root"似乎有些混乱。和"元素"。在XML中,根是树顶部的单个节点。

如果我们指定FOR XML PATH没有任何跟随,那么我们得到一组名为" Row"的XML元素。这是默认名称。

USE AdventureWorks2016CTP3;
GO

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

enter image description here

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

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

enter image description here

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

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

enter image description here

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

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

enter image description here

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

  

如果提供空字符串(FOR XML PATH('')),则不会生成包装元素。

答案 1 :(得分:1)

来自MSDN

  

如果指定零长度字符串,则不会生成包装元素。

' '失败,所以我假设你的意思是一个空字符串,而不是一个空格。)

这与根元素无关,这就是root的用途。这只是关于包装元素。

相关问题