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

今天有个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解析错误异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值