SQL Server中的XML数据进行insert、update、delete操作实现代码
SQL Server中新增加了XML.Modify()方法,分别为xml.modify(insert),xml.modify(delete),xml.modify(replace)对应XML的插入,删除和修改操作。 4: 5: Bill Zack 6: 7: 8: 9: B.将多个元素插入文档中 <div class="codetitle"><a style="CURSOR: pointer" data="21172" class="copybut" id="copybut21172" onclick="doCopy('code21172')"> 代码如下:<div class="codebody" id="code21172"> --方法一:利用变量进行插入 DECLARE @newFeatures xml; SET @newFeatures = N'; SET @XMLVar.modify(' ) insert sql:variable("@newFeatures") into (/catalog[1]/book[1])' --方法二:直接插入 set @XMLVar.modify(') insert ( into (/catalog[1]/book[1]/author[1])' SELECT @XMLVar.query('/catalog[1]/book[1]'); 结果集为: <div class="codetitle"><a style="CURSOR: pointer" data="2609" class="copybut" id="copybut2609" onclick="doCopy('code2609')"> 代码如下:<div class="codebody" id="code2609"> 1: <book category="ITPro"> 2: 3: Bill Zack 4: 5: 6: 7: 8: 9: 10: C.将属性插入文档中 <div class="codetitle"><a style="CURSOR: pointer" data="84856" class="copybut" id="copybut84856" onclick="doCopy('code84856')"> 代码如下:<div class="codebody" id="code84856"> --使用变量插入 declare @var nvarchar(10) = '变量插入' set @XMLVar.modify( 'insert (attribute var {sql:variable("@var")})) into (/catalog[1]/book[1])' --直接插入 set @XMLVar.modify( 'insert (attribute name {"直接插入"})) into (/catalog[1]/book[1]/title[1])' --多值插入 set @XMLVar.modify( 'insert (attribute Id {"多值插入1"},attribute name {"多值插入2"}) ) into (/catalog[1]/book[1]/author[1])' SELECT @XMLVar.query('/catalog[1]/book[1]'); 结果集为: <div class="codetitle"><a style="CURSOR: pointer" data="11559" class="copybut" id="copybut11559" onclick="doCopy('code11559')"> 代码如下:<div class="codebody" id="code11559"> 1: <book category="ITPro" var="变量插入"> 2: <title name="直接插入">Windows Step By Step 3: <author Id="多值插入1" name="多值插入2">Bill Zack 4: 5: D.插入文本节点 <div class="codetitle"><a style="CURSOR: pointer" data="31449" class="copybut" id="copybut31449" onclick="doCopy('code31449')"> 代码如下:<div class="codebody" id="code31449"> set @XMLVar.modify( 'insert text{"at first"} as first) into (/catalog[1]/book[1])' SELECT @XMLVar.query('/catalog[1]/book[1]'); 结果集为: <div class="codetitle"><a style="CURSOR: pointer" data="98337" class="copybut" id="copybut98337" onclick="doCopy('code98337')"> 代码如下:<div class="codebody" id="code98337"> 1: <book category="ITPro"> 2: at first 3: 4: Bill Zack 5: 6: 注意:插入本文同样具体 as first,as last,before,after四种选项,可以参考A中的使用方法 E.插入注释节点 <div class="codetitle"><a style="CURSOR: pointer" data="97673" class="copybut" id="copybut97673" onclick="doCopy('code97673')"> 代码如下:<div class="codebody" id="code97673"> set @XMLVar.modify( N'insert before (/catalog[1]/book[1]/title[1])' ) SELECT @XMLVar.query('/catalog[1]/book[1]'); 结果集为: 1: <book category="ITPro"> 2: 3: 4: Bill Zack 5: 6: 注意插入注释节点同样具体 as first,as last,before,after四种选项,可以参考A中的使用方法 F.插入处理指令 <div class="codetitle"><a style="CURSOR: pointer" data="73106" class="copybut" id="copybut73106" onclick="doCopy('code73106')"> 代码如下:<div class="codebody" id="code73106"> set @XMLVar.modify( 'insert <?Program "Instructions.exe" ?> before (/catalog[1]/book[1]/title[1])' ) SELECT @XMLVar.query('/catalog[1]/book[1]'); 结果集为: 1: <book category="ITPro"> 2: <?Program "Instructions.exe" ?> 3: 4: Bill Zack 5: 6: 注意插入处理指令同样具体 as first,as last,before,after四种选项,可以参考A中的使用方法 G.根据 if 条件语句进行插入 <div class="codetitle"><a style="CURSOR: pointer" data="46807" class="copybut" id="copybut46807" onclick="doCopy('code46807')"> 代码如下:<div class="codebody" id="code46807"> set @XMLVar.modify( 'insert if (/catalog[1]/book[1]/title[2]) then text{"this is a 1 step"} else ( text{"this is a 2 step"} ) into (/catalog[1]/book[1]/price[1])' ) SELECT @XMLVar.query('/catalog[1]/book[1]'); 结果集为: 1: <book category="ITPro"> 2: 3: Bill Zack 4: 5: 2.XML.Modify(delete)语句介绍 <div class="codetitle"><a style="CURSOR: pointer" data="99146" class="copybut" id="copybut99146" onclick="doCopy('code99146')"> 代码如下:<div class="codebody" id="code99146"> --删除属性 set @XMLVar.modify('delete /catalog[1]/book[1]/@category') --删除节点 set @XMLVar.modify('delete /catalog[1]/book[1]/title[1]') --删除内容 set @XMLVar.modify('delete /catalog[1]/book[1]/author[1]/text()') --全部删除 set @XMLVar.modify('delete /catalog[1]/book[2]') SELECT @XMLVar.query('/catalog[1]'); 结果集为: <div class="codetitle"><a style="CURSOR: pointer" data="42130" class="copybut" id="copybut42130" onclick="doCopy('code42130')"> 代码如下:<div class="codebody" id="code42130"> 1: 2: 3: 4: 5: 6: <book category="ITPro"> 7: 8: Stephen Forte 9: 10: 11: 3.XML.Modify(replace)语句介绍 <div class="codetitle"><a style="CURSOR: pointer" data="66293" class="copybut" id="copybut66293" onclick="doCopy('code66293')"> 代码如下:<div class="codebody" id="code66293"> --替换属性 set @XMLVar.modify(N'replace value of(/catalog[1]/book[1]/@category) with ("替换属性")' ) --替换内容 set @XMLVar.modify(N'replace value of(/catalog[1]/book[1]/author[1]/text()[1]) with("替换内容")' ) --条件替换 set @XMLVar.modify(N'replace value of (/catalog[1]/book[2]/@category) with( if(count(/catalog[1]/book)>4) then "条件替换1" else "条件替换2")' ) SELECT @XMLVar.query('/catalog[1]'); [code] 结果集为: [code] 1: 2: <book category="替换属性"> 3: 4: 替换内容 5: 6: 7: <book category="条件替换2"> 8: 9: Andrew Brust 10: 11: 12: <book category="ITPro"> 13: 14: Stephen Forte 15: 16: 17: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |