XML类型的删除操作

前篇XML插入的文章,由于疏忽,可能给一些朋友带来误解。这篇是关于XML类型的删除操作。

在这里再说明下,对XML的操作,不仅需要注意命名空间的问题,同时还需要注意大小写。XML对大小写是敏感的。

 

 

代码

--创建测试数据库
CREATE DATABASE mytest;
GO

USE mytest;
GO

--创建测试表
CREATE TABLE Users
(
    ID 
INT IDENTITY(1,1),
    UserInfo XML

)

/*****************删除节点属性*****************************/    
     
    
---插入测试数据
    DECLARE @xml XML
    
SET @xml='<root>
    <user id="1">
        text
        <userid>1</userid>
        <userName>test1</userName>
    </user>
    </root>
'
    
INSERT INTO Users(UserInfo)VALUES(@xml)

--DELETE Users

UPDATE Users SET UserInfo.modify('delete /root/user/@id')

select * from Users

/*****************删除节点*****************************/    


UPDATE Users SET UserInfo.modify('delete /root/user/userid[1]')

select * from Users



/*****************删除节点中的文本*****************************/    


UPDATE Users SET UserInfo.modify('delete /root/user/text()')

select * from Users



/*****************删除第二个节点(userName)*****************************/    


UPDATE Users SET UserInfo.modify('delete /root/user/*[2]')

select * from Users



/*****************根据属性值删除节点*****************************/    
 
    
---插入测试数据
    DECLARE @xml XML
    
SET @xml='<root>
    <user id="1" a="a">
        <userid>1</userid>
        <userName>test1</userName>
    </user>
    <user id="2" b="b">
        <userid>1</userid>
        <userName>test1</userName>
    </user>
    </root>
'
    
INSERT INTO Users(UserInfo)VALUES(@xml)

---删除属性
UPDATE Users SET UserInfo.modify('delete /root/user[@id=1]/@a')

select * from Users

---删除节点
UPDATE Users SET UserInfo.modify('delete /root/user[@id=1]/userName')

select * from Users

 

 

 

posted @ 2009-12-27 17:06  沉浮  阅读(420)  评论(1编辑  收藏  举报