基于 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 字段创建视图的主要内容,如果未能解决你的问题,请参考以下文章