【问题标题】:How to use FOR XML in Subqueries?如何在子查询中使用 FOR XML?
【发布时间】:2012-07-28 02:29:54
【问题描述】:

我想返回以下 xml:

<ResultDetails>
<Node1>hello</Node1>
<Sites>
<Site><SiteId>1</SiteId></Site>
<Site><SiteId>2</SiteId></Site>
</Sites>
</ResultDetails>

我写了下面的代码,但是没有用:

SELECT 'hello' AS Node1,    
    (SELECT TOP 2 SiteId
     FROM [dbo].[Sites]
       FOR XML PATH('Site')) AS Sites
FOR XML PATH('ResultDetails')

但它会返回:

<ResultDetails>
  <row>
    <Node1>hello</Node1>
    <Sites>&lt;Site&gt;&lt;siteId&gt;102&lt;/siteId&gt;&lt;/Site&gt;&lt;Site&gt;&lt;siteId&gt;1&lt;/siteId&gt;&lt;/Site&gt;</Sites>
  </row>
</ResultDetails>

我应该写什么sql?

谢谢,

【问题讨论】:

    标签: sql sql-server xml for-xml


    【解决方案1】:

    您需要将TYPE 修饰符添加到您的内部查询中:

    SELECT
        'hello' AS Node1
        , (
            SELECT TOP 2 SiteId 
                FROM [dbo].[Sites] 
            FOR XML PATH('Site'), TYPE
        ) AS Sites 
    FOR XML PATH('ResultDetails') 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      相关资源
      最近更新 更多