【问题标题】:Select XML nodes as XML in T-SQL在 T-SQL 中选择 XML 节点作为 XML
【发布时间】:2010-07-07 13:35:11
【问题描述】:

这个看起来很简单,但我一定错过了什么......

鉴于此 SQL:

declare @xml XML
set @xml =
'<people>
  <person>
    <name>Matt</name>
    <surname>Smith</surname>
  <person>
  <person>
    <name>John</name>
    <surname>Doe</surname>
  <person>
</people>'

您将如何获得包含以下内容的表格:

people
----------------------------------------------------------------------
      <person>\n        <name>Matt</name>\n        <surname>Smith</surname>\n      <person>
      <person>\n        <name>John</name>\n        <surname>Doe</surname>\n      <person>

即:将整个节点作为 nvarchar(NNN) 元素获取,而不仅仅是它们的名称、属性或值?

我已经尝试过使用 node()、text()、fn:node()、fn:text()、等等等等... Nuffin!

【问题讨论】:

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


    【解决方案1】:

    此外,如果有人感兴趣,这里是查询的扩展,它只返回根节点的直接子节点,如 xml,如果它们本身有子节点:

    SELECT
        pref.query('.') as XmlExtract
    FROM  
        @xml.nodes('/*/*') AS extract(pref)
    WHERE
        pref.value('./*[1]', 'nvarchar(10)') IS NOT NULL
    

    【讨论】:

      【解决方案2】:

      Crikey,我想我又回答了我自己的问题......

      SELECT
          pref.query('.') as PersonSkills
      FROM  
          @xml.nodes('/*/*') AS People(pref)
      

      【讨论】:

        猜你喜欢
        • 2011-08-10
        • 1970-01-01
        • 1970-01-01
        • 2018-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多