如何使用sql server 2005删除xml中的子元素 [英] How to remove the child element in xml using sql server 2005

查看:43
本文介绍了如何使用sql server 2005删除xml中的子元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在SQL中编写一个查询来创建一个xml



In SQL im writing a query to create a xml

Select
Case When (A.Course_Fee,0)=0 then 0 else Ceiling (A.Course_Fee) end),2,1) as "ABC/DEF"
From Tab1 B inner join Tab1 A on A.Sno = B.Sno where B.Sname = 'AB'





我想删除/删除标签DEF if Course _Fee = 0



能否提供解决方案?



I want to remove/delete the tag DEF if Course_Fee = 0

Can you please provide the solution?

推荐答案

Declare @XML XML
Set @XML ='
<row>
  <ABC>
    <DEF>1</DEF>
  </ABC>
</row>
<row>
  <ABC>
    <DEF>0</DEF>
  </ABC>
</row>'

SELECT line.DEF.value('ABC[1]', 'Int') as ABC
FROM @XML.nodes('row') AS line(DEF) 
--Where line.DEF.value('ABC[1]','Int') <>0 -- if you don't want to see 0 Un-comment it

--Output will be
--ABC
-----
--1
--0

SET @XML.modify('delete //row/ABC/DEF [.=''0'']')
--Output will be
--<row>
--  <ABC>
--    <DEF>1</DEF>
--  </ABC>
--</row>
--<row>
--  <ABC />
--</row>


SELECT line.DEF.value('ABC[1]', 'Int') as ABC
FROM @XML.nodes('row') AS line(DEF) 

--Output will be
--ABC
-----
--1
--0


这篇关于如何使用sql server 2005删除xml中的子元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆