sql-server - 从 varchar(max) 列中选择 XML

标签 sql-server xml

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

<?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 的标识主键。

最佳答案

;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)

关于sql-server - 从 varchar(max) 列中选择 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4429568/

相关文章:

mysql - 选择和删除特定列 SQL 的重复行

sql-server - 我需要根据时间从表中选择数据。但是我的表字段是日期时间

sql-server - 对 SQL Server 表进行非规范化

java - Camel,使用字段条件分割带有 header 的大型 XML 文件

ruby - 解析巨大的(~100mb)kml(xml)文件需要*小时*而没有任何实际解析的迹象

用于从 XML 文件中删除所有注释的 Python 脚本

sql-server - MsSQL 检查约束的正则表达式

sql-server - 如何在SQL Server中使用触发器将记录从一个表插入到另一个表?

c# - 高效 XML 的 .NET 实现

Android,Http Post 不执行更新