您好,欢迎访问一九零五行业门户网

巧用xmltype解析clob数据

对于clob的数据,很多场合中都使用xml的格式,但是对于数据的查取和处理总是感觉力不从心。在条件允许的情况下,如果能够巧妙的使
对于clob的数据,很多场合中都使用xml的格式,但是对于数据的查取和处理总是感觉力不从心。在条件允许的情况下,如果能够巧妙的使用xmltype来做数据处理,无意中是对于clob的一个处理利器。
 简单说下需求。
 数据库里存放的clob类似下面的格式
现在有一个需求是能够把relatedobjectinfo 中的objid查取,整理后得到一个以逗号分隔的串。
 比如上面的clob数据,需要输出成为下面的形式:
 ##pc4.0##118146,##pc4.0##30369,##pc4.0##118145,##pc4.0##118211,##pc4.0##117696,##pc4.0##119094,##pc45.0##118203,
如果直接通过sql语句来写,确实很难实现,,如果通过pl/sql也需要做不少的工作。
 下面尝试使用xmltype来直接读取clob数据。
 简单创建一个测试表,插入数据。
 create table aa(id number,c_cml clob);
insert into aa values(5,to_clob('
'));
来看看xmltype的效果,根据根节点,找到最终的叶子节点。
 select extract(xmltype(c_cml),'/objectinfo/relations/relationinfo/relatedobjects/relatedobjectinfo') a,      
    id
 from    aa where id=5;
a                                                                                                          id
 ---------------------------------------------------------------------------------------------------- --------
  tinfo objid=##pc4.0##118145/> tedobjectinfo objid=##pc4.0##118583/>  objid=##pc4.0##30310/> elatedobjectinfo objid=##pc4.0##30318/> nfo objid=##pc4.0##30309/>
可以看到已经查到了这部分的数据。
更进一步,把xml标记进行清除。可以直接使用replace
 sql> select replace(extract(xmltype(c_cml),'/objectinfo/relations/relationinfo/relatedobjects/relatedobjectinfo'),'##pc4.0##30369/>##pc4.0##118145/>##pc4.0##118211/>##pc4.0##117696/>##pc4.0##11        5
 9094/>##pc4.0##118203/>##pc4.0##118133/>##pc4.0##118135/>##pc4.0##118583/>##pc4.0##30313/>##pc
 4.0##30310/>##pc4.0##110154/>##pc4.0##30317/>##pc4.0##30314/>##pc4.0##30315/>##pc4.0##30318/>#
 #pc4.0##118131/>##pc4.0##30309/>##pc4.0##118160/>##pc4.0##119101/>
然后直接清除尾部标记。
 sql> select replace(replace(extract(xmltype(c_cml),'/objectinfo/relations/relationinfo/relatedobjects/relatedobjectinfo'),'',',') a,   
  2          id
  3          from    aa where id=5;
a                                                                                                          id
 ---------------------------------------------------------------------------------------------------- --------
 ##pc4.0##118146,##pc4.0##30369,##pc4.0##118145,##pc4.0##118211,##pc4.0##117696,##pc4.0##119094,##pc4        5
 .0##118203,##pc4.0##118133,##pc4.0##118135,##pc4.0##118583,##pc4.0##30313,##pc4.0##30310,##pc4.0##11
 0154,##pc4.0##30317,##pc4.0##30314,##pc4.0##30315,##pc4.0##30318,##pc4.0##118131,##pc4.0##30309,##pc
 4.0##118160,##pc4.0##119101,
这样就能很快实现需求,把clob的数据当做xml来做处理,当然了对于clob的数据格式也是有一些限定的。
本文永久更新链接地址:
其它类似信息

推荐信息