0

我使用嵌套查询来连接聚合的行数据。我在嵌套查询中使用的语法是

for XML PATH ('')

有人可以解释上面的引号之间应该做什么吗?我做了一些测试,看起来它只是将我的行数据包含在开始和结束 HTML 之类的标签中。

4

2 回答 2

1

我不是 100% 确定您的意思,但如果您的查询类似于以下内容,那么这可能会对您有所帮助:

SELECT    R.RegionID  AS [@RID],
          R.Enabled   AS [@Enabled],
          (
          SELECT      ST.TypeID  AS [@TID], 
                      QT.[Name] AS [@QTName],   
          FROM        Type ST
          INNER JOIN  QuarryType QT ON ST.QuarryTypeID = QT.QuarryTypeID
          WHERE       R.RegionID = ST.RegionID  
          FOR XML PATH ('QuarryType'), TYPE
          )
FROM      Region R          
FOR XML PATH ('Region'), ELEMENTS, ROOT('root')

如您所见,每个FOR XML PATH ('')块中的文本没有什么特别之处,无论如何都与数据无关。它用于 XML 输出中的元素名称,如下所示:

<root>
    <Region RID="123" Enabled="true">
        <QuarryType TID="4" QTName="Quarry 1"/>
        <QuarryType TID="7" QTName="Quarry 2"/>
        <QuarryType TID="9" QTName="Quarry 5"/>
    </Region>
</root>

如果您需要更多帮助,尽管问!

于 2012-08-13T14:18:23.677 回答
0

空字符串 ('') 是一种特殊情况。你的观察是正确的,因为你放在那里的任何东西都会用你放在那里的任何东西的打开和关闭 XML 标记围绕你的行。例如,如果您说“for xml path ('a')”,它将用<a> </a>.

于 2012-08-13T18:13:21.257 回答