2012-07-06 82 views
1

我有一個XML變量,其中只有一個元素。我需要檢查這個元素是否有一個特定的屬性,如果有,我需要檢查該屬性是否有特定的值,如果有,我需要從XML元素中刪除該屬性。根據值刪除XML屬性

所以可以說我有

DECLARE @Xml XML 
SET @XML = 
'<person 
    FirstName="Harvey" 
    LastName="Saayman" 
    MobileNumber="Empty" 
/>' 

的移動電話號碼屬性可能會或可能不會在那裏,如果是這樣,該值是「空」,我需要我的XML變量改成這樣:

'<person 
    FirstName="Harvey" 
    LastName="Saayman" 
/>' 

我是一個完整的SQL XML noob,不知道該怎麼做,有什麼想法?

回答

3

使用modify()DML子句修改XML節點。在這種情況下是這樣的:

SET @XML.modify('delete (/person/@MobileNumber)[1]') 

This XML workshop可以是有益的有DML條款進行了更深入的瞭解刪除,插入,替換等

+0

我知道這是一個老的文章,但值得更新如果事情是錯的。我很困惑,不管建議的答案是否刪除該屬性不僅如果'MobileNumber'是'空'?請求者說:「MobileNumber屬性可能存在,也可能不存在,如果是,值爲」空「,我需要更改我的XML ......」,我認爲這是不正確的答案。 – 2016-03-15 12:19:52

+0

容易peasy @GiuseppeRomagnuolo發表你認爲是正確的答案。或者從Mikael上傳一個。 – Yaroslav 2016-03-15 12:42:23

+0

嗨@雅羅斯拉夫,我的建議是更多的你更新你的答案,如果你也同意它實際上是誤導。儘管現在已經過去了幾年,但仍然有人會爲同樣的問題而苦苦掙扎。你的答案,被接受的答案將首先出現,並且我相信是誤導,就是這樣。我已經投了Mikael,但我還沒有投票支持你:) – 2016-03-15 14:18:43

3
SET @XML.modify('delete /person/@MobileNumber[. = "Empty"]')