科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道XML DML 数据修改语言小节

XML DML 数据修改语言小节

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

XML DML 数据修改语言小节

作者:csdn 来源:csdn 2009年12月18日

关键字: MS-SQL Server 问答

  • 评论
  • 分享微博
  • 分享邮件

XML DML 数据修改语言小节

  1、XML DML 数据修改语言,插入
http://blog.csdn.net/HEROWANG/archive/2009/10/18/4694009.aspx
  2、XML DML 数据修改语言,删除,修改
http://blog.csdn.net/HEROWANG/archive/2009/10/18/4694020.aspx

SQL code二、XML 数据修改语言
insert
      Expression1 (
                 {as first | as last} into | after | before
                                    Expression2
                )
Expression1 :标识要插入的一个或多个节点。
Expression2 :目标标识节点。
into :Expression1 标识的节点作为 Expression2 标识的节点的直接后代(子节点)插入。如果 Expression2 中的节点已有一个或多个子节点,则必须使用 as first 或 as last 来指定所需的新节点添加位置。例如,分别在子列表的开头或末尾。插入属性时忽略 as first 和 as last 关键字。
after :Expression1 标识的节点作为 Expression2 标识的节点的同级节点直接插入在其后面。after 关键字不能用于插入属性。
before :Expression1 标识的节点作为 Expression2 标识的节点的同级节点直接插入在其前面。before 关键字不能用于插入属性。
declare @myxml xml
set @myxml='<?xml version="1.0" encoding="gb2312"?>
            <root>
               <item id="1">
               </item>
            </root>'
select @myxml

--1、插入item的第一个子元素
  set @myxml.modify('insert <course1>sql server2005</course1>  into (root/item)[1]')
--2、插入item的第一个子元素,插入到同级子元素前面
  set @myxml.modify('insert <sname> 王一诺</sname> as first into (root/item)[1]')
--3、插入item的第一个子元素,插入到同级子元素后面
  set @myxml.modify('insert <grade>82</grade> as last into (root/item)[1]')
--4、插入第二个item节点
  set @myxml.modify('insert <item id="2" year="2009"></item> into (/root)[1]')
--或者
  set @myxml.modify('insert <item id="2" year="2009"></item> after (/root/item)[1]')
--5、向第二个item节点插入多个元素
  set @myxml.modify('insert (<sname>王海</sname>,<course1>sql server2005</course1>,<grade>75</grade>) into (/root/item)[2]')
--6、插入属性
  set @myxml.modify('insert attribute year{"2009"} into (/root/item)[1]')
select @myxml
--7、插入多个属性
  set @myxml.modify('insert (attribute depart{"计算机"},attribute class{"1班"}) into (/root/item)[1]')
--8、插入文本节点
  set @myxml.modify('insert text{"成绩表"} as first into  (/root)[1]') 

--9、插入整个节点
  set @myxml.modify('insert <item id="3"  year="2009">
                           <sname>王若天</sname>
                           <course1>oracle</course1>
                           <grade>59</grade></item>
                     into (/root)[1]')
--10、插入处理指令
SET @myxml.modify('insert <?Program ="Instructions.exe" ?> before (/root)[1] ')  
select @myxml
二、删除操作
declare @myxml xml
set @myxml='<?Program ="Instructions.exe" ?>
          <root>成绩表--这是个文本节点
             <item id="1" year="2009" depart="计算机" class="1班">
               <sname> 王一诺</sname>
               <course1>sql server2005</course1>
               <grade>82</grade>
             </item>
             <item id="2" year="2009" class="1班">
               <sname>王海</sname>
               <course1>sql server2005</course1>
               <grade>75</grade></item>
             <item id="3" year="2009" class="1班">
               <sname>王若天</sname>
               <course1>oracle</course1>
               <grade>59</grade>
             </item>
           </root>'

--1、删除所有指令
set @myxml.modify('delete //processing-instruction()')
select '删除所有指令'=@myxml
--2、删除文本节点
set @myxml.modify('delete /root/text()')
select '删除文本节点'=@myxml
--3、删除节点id为的属性
set @myxml.modify('delete /root/item[@id=1]/@class')
select '删除节点id为的属性'=@myxml
--4、删除第二个节点属性
set @myxml.modify('delete /root/item[2]/@class')
select '删除第二个节点属性'=@myxml
--5、删除节点属性
set @myxml.modify('delete /root/item/@class')
select '删除节点属性'=@myxml
--6、删除节点id为的元素
set @myxml.modify('delete /root/item[@id=1]/grade')
select '删除节点id为的元素'=@myxml
--7、删除第二个节点元素
set @myxml.modify('delete /root/item[2]/grade')
select '删除第二个节点元素'=@myxml
--8、删除元素
set @myxml.modify('delete /root/item/grade')
select '删除元素'=@myxml
--9、删除id为的节点
set @myxml.modify('delete /root/item[@id=2]')
select '删除id为的节点'=@myxml
--10、删除第二个的节点
set @myxml.modify('delete /root/item[2]')
select '删除id为的节点'=@myxml
--11、删除第二个节点
set @myxml.modify('delete /root/item')
select '删除节点'=@myxml
三、修改操作
--1、修改文本的值
set @myxml.modify('replace value of(/root/text())[1] with "1班成绩表"')
select @myxml
--2、修改元素的值
set @myxml.modify('replace value of(/root/item[@id=3]/grade/text())[1] with "60"')
select @myxml
--3、修改属性的值
set @myxml.modify('replace value of(/root/item[@id=1]/@class)[1] with "2班"')
select @myxml

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章