【问题标题】:SQL Server 2005 For XML Explicit - Need help formattingSQL Server 2005 For XML Explicit - 需要帮助格式化
【发布时间】:2010-09-05 09:25:44
【问题描述】:

我有一个结构如下的表:


LocationID AccountNumber
long-guid-here 12345
long-guid-here 54321

要传递到另一个存储过程,我需要 XML 看起来像这样:

<root> 
    <clientID>12345</clientID>
    <clientID>54321</clientID>
</root>

到目前为止,我能做的最好的事情就是这样:

<root clientID="10705"/>

我正在使用这个 SQL 语句:

SELECT
    1 as tag,
    null as parent,
    AccountNumber as 'root!1!clientID'
FROM
    Location.LocationMDAccount
WHERE
    locationid = 'long-guid-here'
FOR XML EXPLICIT

到目前为止,我已经查看了the MSDN page 上的文档,但没有得到想要的结果。


@KG,

你的实际上给了我这个输出:

<root>
  <Location.LocationMDAccount>
    <clientId>10705</clientId>
  </Location.LocationMDAccount>
</root>

我现在将坚持使用 Chris Leon 的 FOR XML EXPLICIT

【问题讨论】:

    标签: sql xml sql-server-2005 formatting for-xml


    【解决方案1】:

    试试

    SELECT
        1 AS Tag,
        0 AS Parent,
        AccountNumber AS [Root!1!AccountNumber!element]
    FROM
        Location.LocationMDAccount
    WHERE
        LocationID = 'long-guid-here'
    FOR XML EXPLICIT
    

    【讨论】:

      【解决方案2】:

      试试这个,克里斯:

      SELECT
          AccountNumber as [clientId]
      FROM
          Location.Location root
      WHERE
          LocationId = 'long-guid-here'
      FOR
          XML AUTO, ELEMENTS
      

      非常抱歉!我把你要的东西弄混了。我更喜欢 XML AUTO 只是为了便于维护,但我相信任何一个都是有效的。我为疏忽道歉 ;-)

      【讨论】:

        【解决方案3】:

        我明白了:

        select
        1 as tag,
        null as parent,
        AccountNumber as 'root!1!clientID!element'
        from
        Location.LocationMDAccount
        where
        locationid = 'long-guid-here'
        for xml explicit
        

        【讨论】:

          【解决方案4】:

          使用 SQL Server 2005(或可能是 2008),我发现 XML PATH 比 XML Explicit 更容易维护 SQL(特别是当 SQL 较长时)。

          在这种情况下:

          SELECT AccountNumber as "clientID"
          FROM Location.LocationMDAccount
          WHERE locationid = 'long-guid-here'
          FOR XML PATH (''), Root ('root');
          

          【讨论】:

            【解决方案5】:
            选择 1 作为标签, null 作为父母, AccountNumber 作为 'clientID!1!!element' FROM Location.LocationMAccount WHERE locationid = 'long-guid-here' 对于 XML 显式,root('root')

            【讨论】:

              猜你喜欢
              • 2011-07-10
              • 2012-03-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多