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