2012-07-06 79 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"]')