XML PATH连接语法

时间:2012-08-13 14:05:31

标签: sql-server sql-server-2008 tsql

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

for XML PATH ('')

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

2 个答案:

答案 0 :(得分: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>

如果您需要更多帮助,请询问!

答案 1 :(得分:0)

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