Oracle数据库Clob类型存储XML数据下节点内容查询

来源:互联网 发布:广元广电网络宽带 编辑:程序博客网 时间:2024/06/05 09:46

今天有个sql查询用到了在clob类型下查询xml数据某个节点值,通过百度后在这里记录一下
xml数据格式如下:

<?xml version="1.0" encoding="GBK"?><flowdoc>  <meta name="subject">529测试66</meta>  <meta name="authordept">系统维护</meta>  <meta name="authorname">xxx</meta>  <meta name="createdtime">20150529日</meta>  <item name="parentorgid">D:0</item>  <item name="remark"></item>  <item name="zzr_name"></item>  <item name="tel">18905810303</item>  <item name="zzr_loginname"></item>  <item name="maindept_id">D:262</item>  <item name="columnid">760</item>  <item name="maindept_value">系统维护;D:262</item>  <item name="maindept_name">系统维护</item>  <item name="zzbm"></item>  <item name="szbm_id"></item>  <item name="content"></item>  <item name="num">网络运建</item>  <item name="signdept_id"></item>  <item name="signdept_value"></item>  <item name="signdept"></item>  <item name="szbm"></item>  <item name="v_UpperDept">0</item>  <item name="signdept_name"></item>  <item name="zzbm_id"></item>  <item name="maindept">系统维护</item></flowdoc>

Oracle数据库提供了extract、extractvalue、xmltype函数用来获取xml节点值

extractvalue:
sql语句:select extractvalue(xmltype(t.bodyxml),’/flowdoc/item[@name=”num”]’) as num
from tablename t where docid=’452EEDE9BCBC0039446FCDF1F55EA96A’ and DBMS_LOB.GETLENGTH(bodyxml)>0
查询结果返回:
网络运建
说明:条件DBMS_LOB.GETLENGTH(bodyxml)>0是因为数据可能为空,所以这里通过该函数判断值是否存在,因为不加该判断前面的条件查询遇到空值对象会报xml解析错误异常

0 0
原创粉丝点击