2012-01-14 71 views
0

我有一列使用SQL Server的Xml数据类型存储xml。此外,我有一个Xpath查询,可以从我想要删除的XML中选择单个节点。所以,我的问题是,有没有一种方法可以选择列中的所有xml,除了我需要删除的单个特定节点?我可以选择要删除的节点,但我找不到一种方法将其从其余的xml中删除,并保留其余的完整。如果任何人都可以给我任何关于如何使用SQL Server Xml函数的指导,那将不胜感激。全选xml排除单个特定节点SQL Server

+0

请显示您的代码 – Hogan 2012-01-14 21:36:11

回答

1

你可以这样说:

DECLARE @xml XML 
SELECT @xml = YourXmlField 
FROM YourTable 
WHERE ID = 1 

SET @xml.modify('delete /Root/A') 
SELECT @xml 

所以,你需要把值转换成XML变量,并使用修改删除节点,给该节点删除相应的XPath。

+0

感谢您的回复!我尝试了你所说的,并且我得到了这个错误:错误地使用了XML数据类型方法'modify'。预计在这种情况下非增变方法。这里是我使用的XQuery代码行会产生以下错误:pXml.modify('delete/variation/section/layout/area [@type =“Image”and @mode =“logo”and contains(@previewimage, “.jpg”)]') – 2012-01-14 22:05:19

+2

您是否使用XML变量尝试了我给出的* exact *方法?当您以错误的方式使用“修改”时会发生错误 - 例如如果你试图直接在你的SELECT中做到这一点。您只能将其用作UPDATE..SET语句的一部分,或作为XML变量上SET的一部分。 – AdaTheDev 2012-01-14 22:09:31

+0

BRILLIANT!你是对的,我在选择声明中使用它。我根据你所说的做了修改,它完美的工作! – 2012-01-14 22:54:16