SQL 和转义的 XML 数据

Ada*_*sen 4 xml sql sql-server

我有一个混合转义和非转义 XML 的表。当然,我需要的数据是转义的。例如,我有:

<Root>
    <InternalData>
         <Node>
              &lt;ArrayOfComment&gt;
                 &lt;Comment&gt
                    &lt;SequenceNo&gt;1&lt;/SequenceNo&gt;
                    &lt;IsDeleted&gt;false&lt;/IsDeleted&gt;
                    &lt;TakenByCode&gt;397&lt;/TakenByCode&gt;
                 &lt;/Comment&gt
              &lt;/ArrayOfComment&gt;
         </Node>
    </InternalData>
</Root>
Run Code Online (Sandbox Code Playgroud)

可以看到,Node标签中的数据全部转义了。我可以使用查询来获取Node数据,但是如何将其转换为 SQL 中的 XML 以便对其进行解析和分解?我对在 SQL 中使用 XML 还很陌生,我似乎找不到任何这样的例子。

谢谢

Ric*_*iwi 5

您没有提供有关最终目标的足够信息,但这将使您非常接近。 仅供参考- 你有两个失踪; 两者之后comment&gt

declare @xml xml
set @xml = '
<Root>
    <InternalData>
         <Node>
              &lt;ArrayOfComment&gt;
                 &lt;Comment&gt;
                    &lt;SequenceNo&gt;1&lt;/SequenceNo&gt;
                    &lt;IsDeleted&gt;false&lt;/IsDeleted&gt;
                    &lt;TakenByCode&gt;397&lt;/TakenByCode&gt;
                 &lt;/Comment&gt;
              &lt;/ArrayOfComment&gt;
         </Node>
    </InternalData>
</Root>
'

select convert(xml, n.c.value('.', 'varchar(max)'))
from @xml.nodes('Root/InternalData/Node/text()') n(c)
Run Code Online (Sandbox Code Playgroud)

输出

<ArrayOfComment>
  <Comment>
    <SequenceNo>1</SequenceNo>
    <IsDeleted>false</IsDeleted>
    <TakenByCode>397</TakenByCode>
  </Comment>
</ArrayOfComment>
Run Code Online (Sandbox Code Playgroud)

结果是一个 XML 列,您可以将其放入变量或直接交叉应用以从 XML 片段中获取数据。