从 varchar(max) 列中选择 XML

2021-10-01 00:00:00 xml sql-server

我在 SQL Server 2005 的 varchar(max) 列中存储了一些 XML 数据.数据采用以下格式(FQTN = 完全限定类型名称):

I have some XML data stored in a varchar(max) column on SQL Server 2005. The data is in the form (FQTN = fully qualified type name):

<?xml version="1.0" encoding="utf-16"?>
<History xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <EntityViews>
    <EntityProxy Type="FQTN" Key="386876" />
    <EntityProxy Type="FQTN" Key="387981" />
    <!-- etc. -->
  </EntityViews>
</History>

如何选择类型、键,以便从该列中的 XML 数据中获得单行的表格结果?该表有一个名为 HistoryId 的身份主键.

How can I select Type, Key so that I get a tabular result from the XML data in this column for a single row? The table has an identity primary key named HistoryId.

推荐答案

;with cteCastToXML as (
    select CAST(YourColumn as xml) as x
        from YourTable
)
select h.ep.value('@Type','varchar(10)') as [Type],
       h.ep.value('@Key', 'varchar(10)') as [Key]
    from cteCastToXML
        cross apply x.nodes('/History/EntityViews/EntityProxy') as h(ep)

相关文章