我有一列使用SQL Server的Xml数据类型存储xml。此外,我有一个Xpath查询,可以从我想要删除的XML中选择单个节点。所以,我的问题是,有没有一种方法可以选择列中的所有xml,除了我需要删除的单个特定节点?我可以选择要删除的节点,但我找不到一种方法将其从其余的xml中删除,并保留其余的完整。如果任何人都可以给我任何关于如何使用SQL Server Xml函数的指导,那将不胜感激。全选xml排除单个特定节点SQL Server
回答
你可以这样说:
DECLARE @xml XML
SELECT @xml = YourXmlField
FROM YourTable
WHERE ID = 1
SET @xml.modify('delete /Root/A')
SELECT @xml
所以,你需要把值转换成XML变量,并使用修改删除节点,给该节点删除相应的XPath。
感谢您的回复!我尝试了你所说的,并且我得到了这个错误:错误地使用了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
您是否使用XML变量尝试了我给出的* exact *方法?当您以错误的方式使用“修改”时会发生错误 - 例如如果你试图直接在你的SELECT中做到这一点。您只能将其用作UPDATE..SET语句的一部分,或作为XML变量上SET的一部分。 – AdaTheDev 2012-01-14 22:09:31
BRILLIANT!你是对的,我在选择声明中使用它。我根据你所说的做了修改,它完美的工作! – 2012-01-14 22:54:16
- 1. SQL Server:按XML列的节点排序
- 2. 使用SQL选择单个XML节点
- 3. 如何选择XML节点的SQL Server
- 4. 从xml中删除所有节点,使用XSLT排除特定节点
- 5. XSLT XML到XML选择特定节点
- 6. 排序特定的xml节点
- 7. 排序只有特定的XML节点
- 8. SQL Server 2008 XML空节点
- 9. SQL Server XML抽取节点
- 10. 生成XML - 排除节点
- 11. SQL选择行并排除子节点
- 12. 在SQL Server中获取特定的XML子节点
- 13. 删除xml中的特定节点
- 14. 复制XML,同时排除父节点,删除特定的子节点并覆盖一些子节点
- 15. 删除在SQL Server中的XML领域的多个节点
- 16. SQL Server的FOR XML:加入XML节点到一个XML
- 17. XML:在特定节点
- 18. XML到PSV特定节点
- 19. 使用SQL在特定位置插入特定的XML节点
- 20. 选择单节点在XML
- 21. 删除多个节点的单次XQuery的SQL Server
- 22. SQL Server节点
- 23. 正在更新SQL Server XML节点
- 24. XSLT根据XML节点排除项目
- 25. 选择XML节点在SQL服务器
- 26. 在SQL Server 2008中删除XML子节点元素
- 27. SQL Server xml将一个节点的值复制到另一个节点
- 28. 跟踪XML节点在SQL Server中的SQL Server这样的流
- 29. SQL Server中的XML子节点追加到父节点
- 30. 选择多个节点XML
请显示您的代码 – Hogan 2012-01-14 21:36:11