前篇XML插入的文章,由于疏忽,可能给一些朋友带来误解。这篇是关于XML类型的删除操作。
在这里再说明下,对XML的操作,不仅需要注意命名空间的问题,同时还需要注意大小写。XML对大小写是敏感的。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
-- 创建测试数据库
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