首页 > 解决方案 > 从 SQL 查询结果集中的 xml 列中提取子字符串

问题描述

我在Oracle 12 数据库MYTABLE中有一个表和列。该列包含如下字符串,长度不同 -MYXMLMYXML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:NodeData xmlns:ns2="http://abcd.org/xyz/schema/">
    <Head msgId="ACVF63980FGQW56123" orgId="12345" ts="2017-04-13T18:37:27+05:30" ver="1.0"/>
    <Info>
        <Identity id="45298" verifiedName="MFROMLA" type="TECH"/>
        <Rating name="HIGH"/>
    </Info>
    <Node Name="PQ" Desc="PreQualified" NodeID="2387ajdh231dqhhg21098"/>
</ns2:NodeData>

我想PQ使用 SQL 查询仅从该列值中提取。我怎么做?如果可能的话,我应该能够使用Name标签进行搜索并提取其值。

标签: sqlxmloracle

解决方案


这是您可以使用的一个查询,它从您的 xml 字符串Name中提取节点的属性。Node假设MYXML数据类型是VARCHAR2

SELECT EXTRACT(xmltype(myxml), '/Node/@Name') 
FROM mytable;

推荐阅读