XML 数据类型列的视图

Posted

技术标签:

【中文标题】XML 数据类型列的视图【英文标题】:A View Over a XML Data Type Column 【发布时间】:2009-11-12 00:33:22 【问题描述】:

我有一个包含 XML 数据类型列(列名 FileContent)的表。我想创建一个查询 XML 数据类型列的内容的视图,这样我就不再有 FileContent 列,而是有两个额外的列,分别是来自基础 XML 文档的 FuelPathwayCode 和 PhysicalPathwayCode。 SQL Server 2008 可以做到这一点吗?如果是这样,怎么做?谢谢。

CREATE VIEW vw_LC_UploadXML
AS Select
  UploadFileID,
  Year,
  Quarter,
  CompanyID,
  FileType,
  FileContent,
  FileName,
  Description,
  Success,
  AddBy,
  AddDttm
FROM LC_UploadXML

【问题讨论】:

【参考方案1】:

http://msdn.microsoft.com/en-us/library/bb500166.aspx

使用FileContent.value('(/FuelPathwayCode/@year)[1]', 'int(4)') 检索您要查找的特定字段。

这在 SQL Server 2008 中受支持。

【讨论】:

我希望遍历整个 XML 文档并在一个结果集中查询 /FuelPathwayCode 的所有值? [1] 只是拿起第一个实例。我用什么来获取 ../FuelPathwayCode 的所有值? SELECT FileContent.value('(LCFS-Report/Fuel/FuelPathwayCode)[1]', 'varchar(100)') as FuelPathwayCode FROM LC_UploadXML【参考方案2】:

XML 在 Sql Server 2k5 及更高版本中具有相当丰富的支持,这里有多种选择。您可以尝试使用xml data type methods 进行查询、从中提取值、迭代文档中的节点以及修改内容。这可能是在视图中使用的最佳选择,在您的情况下,您可能需要查看value method。

【讨论】:

以上是关于XML 数据类型列的视图的主要内容,如果未能解决你的问题,请参考以下文章

是否可以更改视图中列的数据类型?

初识Oracle的XMLType

postgres将视图列的数据类型从未知更改为文本

为 SQL 视图展平嵌套 XML

更改表和视图的数据类型

从SQL Server的XML数据类型字段中提取数据