Sql 查询XML CLOB列以获取列中的子XML

Sql 查询XML CLOB列以获取列中的子XML,sql,xml,oracle,clob,Sql,Xml,Oracle,Clob,我的表中有一个包含XML的CLOB列。我想将特定标记后的xml提取到它的结束标记,即 CLOB列中的完整XML <ParentTag> <Location>ABC XYZ ....</Location> <Person> <Name>Mohsin</Name> <Age>23</Age> </Person> </ParentTag> ABC XYZ。。。。 穆

我的表中有一个包含XML的CLOB列。我想将特定标记后的xml提取到它的结束标记,即

CLOB列中的完整XML

<ParentTag>
 <Location>ABC XYZ ....</Location>
 <Person>
  <Name>Mohsin</Name>
  <Age>23</Age>
 </Person>
</ParentTag>

ABC XYZ。。。。
穆赫辛
23
我想拿的东西是这样的:

<Person>
  <Name>Mohsin</Name>
  <Age>23</Age>
</Person>

穆赫辛
23
我曾尝试使用dbms\u lob.substrdbms\u lob.getlength,但这没有帮助,因为在不同的场景中,子XML可能包含从不同字节开始的
标记

任何帮助都将不胜感激。
谢谢

不要试图用子字符串来解析节点。甲骨文拥有广泛的市场。您可以通过以下方式执行此操作:

提取的
Person
节点仍将具有该命名空间信息,但:

STRING_VALUE                                                                   
--------------------------------------------------------------------------------
<NS4:Person xmlns:NS4="http://soa.comptel.com/2011/02/instantlink">             
  <NS4:Name>Mohsin</NS4:Name>                                                   
  <NS4:Age>23</NS4:Age>                                                         
</NS4:Person>
STRING\u值
--------------------------------------------------------------------------------
莫辛
23

不要尝试自己用子字符串解析节点。甲骨文拥有广泛的市场。您可以通过以下方式执行此操作:

提取的
Person
节点仍将具有该命名空间信息,但:

STRING_VALUE                                                                   
--------------------------------------------------------------------------------
<NS4:Person xmlns:NS4="http://soa.comptel.com/2011/02/instantlink">             
  <NS4:Name>Mohsin</NS4:Name>                                                   
  <NS4:Age>23</NS4:Age>                                                         
</NS4:Person>
STRING\u值
--------------------------------------------------------------------------------
莫辛
23

你好,亚历克斯,非常感谢你的回答。请原谅我错过了名称空间。我在标记上有名称空间。如下所示:
code ABC XYZ。。。。Mohsin 23
我尝试使用
代码传递xmltype(prov_request)返回内容),但我无法获得期望的结果。
@user3081780-更新了处理名称空间的版本。嗨,alex,非常感谢你的回答。请原谅我错过了名称空间。我在标记上有名称空间。如下所示:
code ABC XYZ。。。。Mohsin 23
我尝试使用
代码传递xmltype(prov_请求)返回内容,但无法获得所需的结果。
@user3081780-使用处理名称空间的版本更新。
select xmlquery('declare namespace NS4 = "http://soa.comptel.com/2011/02/instantlink"; /ParentTag/NS4:Person'
  passing xmltype(prov_request) returning content) as xml_value
from your_table;

select xmlserialize(content
  xmlquery('declare namespace NS4 = "http://soa.comptel.com/2011/02/instantlink"; /ParentTag/NS4:Person'
      passing xmltype(prov_request) returning content)
    as varchar2(150) indent size=2) as string_value
from your_table;
STRING_VALUE                                                                   
--------------------------------------------------------------------------------
<NS4:Person xmlns:NS4="http://soa.comptel.com/2011/02/instantlink">             
  <NS4:Name>Mohsin</NS4:Name>                                                   
  <NS4:Age>23</NS4:Age>                                                         
</NS4:Person>