SQL Query删除XML中的属性

时间:2011-07-07 09:01:04

标签: sql xml oracle

我有XML类型的列。这是一个像这样的xml

<items>
   <item type="xxx"><items>
   <item type="xxx"><items>
</items>

我需要删除所有类型属性。我知道oracle有一些用于xml操作的函数,但我不知道如何删除属性。

这样的查询怎么样?

2 个答案:

答案 0 :(得分:6)

以下是使用Oracle提供的SQL函数deletexml

的示例

我正在使用他的XPATH表达式向Jonas Lincoln致谢

SELECT deleteXML(xmltype.CREATEXML('<items>
                                       <item type="xxx">a</item>
                                       <item type="xxx">b</item>
                                   </items>'),
                                   '/items/item[@type="xxx"]/@type')
FROM dual  

<items>
   <item>a</item>
   <item>b</item>
</items>                                                         

答案 1 :(得分:2)

declare @xml as xml
set @xml = '
<items>
    <item type="xxx">3</item>
    <item type="xxx">4</item>
    </items>'

SET @xml.modify('delete (/items/item[@type="xxx"]/@type)')

select cast(@xml as nvarchar(100))

<items>
  <item>3</item>
  <item>4</item>
</items>