基于 XML 字段创建视图

Posted

技术标签:

【中文标题】基于 XML 字段创建视图【英文标题】:Create a view based on XML field 【发布时间】:2011-12-10 08:17:52 【问题描述】:

我有一个带有特定常量格式的 XML 字段的表。如何根据该字段创建一个视图,以显示该字段中的数据?

谢谢

编辑 1)

我的数据是这样的:

【问题讨论】:

您想创建一个包含 XML 数据中所有元素的视图吗?您的数据看起来如何?您可以使用多个 xPath 表达式创建视图,但这很慢。 @Albin - 您的意思是在视图中执行 xPath 查询会更慢吗?我希望性能是一样的。 @MikaelEriksson,不,我只是说 xPath 通常很慢。最近,我不得不将包含大量 xPath 的视图重写为需要维护的具体表,以获得合理的性能。 【参考方案1】:

这与创建任何视图相同。

create view vName
as
select somecolumn
from sometable

只需插入使用 XML 列获取值的查询即可。

【讨论】:

如果我使用 XPath 是否会减慢 1,000,000 条记录? 是否“慢”只有您自己才能判断。它取决于很多事情,很大程度上取决于用户的期望。我可以告诉你,如果将数据存储在规范化表中而不是 XML 中,查询数据会快得多。【参考方案2】:

你可以创建这样的东西

CREATE VIEW [dbo].[vEmployees]
WITH SCHEMABINDING
AS
    SELECT
    person.n.value('ID[1]', 'int') AS ID,
    person.n.value('Name[1]', 'nvarchar(50)') AS Name,
    person.n.value('LastName[1]', 'navarchar(50)') AS LastName
    FROM dbo.Table x
    CROSS APPLY x.XmlColumn.nodes('/Employees/Person') person(n)

GO

【讨论】:

以上是关于基于 XML 字段创建视图的主要内容,如果未能解决你的问题,请参考以下文章

基于三个不同的表创建视图

用SQL代码创建一个视图,并查询视图中的字段

Android 从布局视图创建和打印 pdf

如何在 OpenERP7 视图中更改 XML 标签?

如何在 Drupal 7 中创建一个仅显示基于当前用户字段的过滤列表的视图

如何在表格视图 IOS 内的滚动视图中创建文本字段