读书人

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

发布时间: 2014-01-08 00:30:58 作者: rapoo

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
--@方式取属性

读书人网 >oracle

热点推荐