首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

xml数据的读取,sql应该如何写

2014-01-08 
xml数据的读取,sql应该怎么写?system_config_info表的xml_value字段有如下值:?xml version1.0 encodin

xml数据的读取,sql应该怎么写?
system_config_info表的xml_value字段有如下值:

<?xml version="1.0" encoding="gb2312"?>
<Xml_Value> <value rdv="9">EXAM</value> 
            <value rdv="9">LIS</value> 
            <value rdv="9">ECG</value> 
            <value rdv="1">EMR</value>  
</Xml_Value>


sql是:
SELECT extractValue(value(t),'/value')
 FROM system_config_info,
      TABLE( xmlsequence ( extract(xml_value,  '/Xml_Value/value' ) )
           ) t
   
查询结果如下:
EXAM
LIS
ECG
EMR


如果我想取出rdv的值,查询结果实例:
9 EXAM
9 LIS
9 ECG
1 EMR

这样的sql应该怎么写??????
[解决办法]
最好用oracle自带的parse xml package
[解决办法]
with system_config_info as(
select xmltype('<?xml version="1.0" encoding="gb2312"?>
<Xml_Value> <value rdv="9">EXAM</value> 
            <value rdv="9">LIS</value> 
            <value rdv="9">ECG</value> 
            <value rdv="1">EMR</value>  
</Xml_Value>') xml_value from dual)
SELECT extractvalue(value(t),'value/@rdv'),extractValue(value(t),'value')
 FROM system_config_info,
      TABLE( xmlsequence ( extract(xml_value,  '/Xml_Value/value' ) )
           ) t
[解决办法]


--参考此sql:
SQL> SELECT EXTRACTVALUE(x, '/Card/cd/@rdv') as pro
  2    FROM (SELECT XMLTYPE('<Card><cd rdv="7">小S</cd></Card>') x FROM dual);
 
PRO
--------------------------------------------------------------------------------
7
--@方式取属性

热点排行