2012-01-14 21 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