Sql 查询XML CLOB列以获取列中的子XML
我的表中有一个包含XML的CLOB列。我想将特定标记后的xml提取到它的结束标记,即 CLOB列中的完整XMLSql 查询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。。。。 穆
<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.substr和dbms\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>