首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle XMLtype查询

Oracle XMLtype查询
EN

Stack Overflow用户
提问于 2012-05-01 05:22:12
回答 2查看 1.3K关注 0票数 0

我正在努力学习Oracle XML的学习曲线。我有一个XML文档,它在任何级别都包含一个'Error/Text‘元素。我想查询文档并获取每个错误消息的文本作为其自己的记录。到目前为止,在我的尝试中,文本被连接在一起成为一个记录。我怎样才能把他们放入他们自己的记录中?谢谢。

代码语言:javascript
复制
with xmldoc_ as (
SELECT xmltype('
<B>
<A>
<Error><Text>Error #1</Text></Error>
</A>
<C>
<D>
<Error><Text>Error #2</Text></Error>
</D>
</C>
</B>
') object_value from dual)
select
XMLcast(
   XMLquery('//Error/Text' passing object_value returning content) 
   as varchar2(200)
) message
from xmldoc_
EN

回答 2

Stack Overflow用户

发布于 2012-05-01 22:32:21

一开始我想如果你把XPath表达式改成

代码语言:javascript
复制
//Error[1]/Text

它会做你想要的,但它没有。下面稍微调整的代码会给你你想要的。如果您想开始做大量与XMLTYPE相关的事情,最好阅读XML开发人员指南,因为Oracle可以用XML做很多事情。

代码语言:javascript
复制
with XML as
    (select xmltype(
    '<B>
<A>
<Error><Text>Error #1</Text></Error>
</A>
<C>
<D>
<Error><Text>Error #2</Text></Error>
</D>
</C>
</B>') as OBJECT_VALUE from dual
   )
   select column_value
     from XML,
          XMLTABLE
          (
             '//Error/Text/text()'
             passing OBJECT_VALUE
      )
/ 
票数 0
EN

Stack Overflow用户

发布于 2012-05-01 22:49:46

通过使用XMLTable

代码语言:javascript
复制
SQL> with xmldoc_ as
  2  ( SELECT xmltype
  3           ( '<B>
  4               <A>
  5                <Error>
  6                 <Text>Error #1</Text>
  7                </Error>
  8               </A>
  9               <C>
 10                <D>
 11                 <Error>
 12                  <Text>Error #2</Text>
 13                 </Error>
 14                </D>
 15               </C>
 16              </B>'
 17           ) object_value
 18      from dual
 19  )
 20  select text
 21    from xmldoc_
 22       , xmltable
 23         ( '//Error'
 24           passing object_value
 25           columns text varchar2(20) path 'Text'
 26         )
 27  /

TEXT
--------------------
Error #1
Error #2

2 rows selected.

致以敬意,

罗伯。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10390763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档