<wbi:appData>
<wbi:content wbi:name="1st_status">
<wbi:value xsi:type="xsd:string">Success</wbi:value>
</wbi:content>
</wbi:appData>
</wbi:event>
我需要使用SQL开发人员获取第2行的值“1st_status”和第3行的“Success”。
这个xml在一个表中,该表有一个CLOB类型的列。
答案 0 :(得分:2)
(即表yourdata
包含clob列c
)
SQL> select extractvalue(xmltype(c), '/wbi:event/wbi:appData/wbi:content/@wbi:name','xmlns:wbi="http://foo"') name,
2 extractvalue(xmltype(c), '/wbi:event/wbi:appData/wbi:content/wbi:value','xmlns:wbi="http://foo"') status
3 from yourdata
4 /
NAME STATUS
--------------- ---------------
1st_status Success
这假设您的wbi名称空间是xmlns:wbi =“http:// foo”
如果// content是重复标记,那么请改为执行此操作:
SQL> select extractvalue(value(t), '/wbi:content/@wbi:name','xmlns:wbi="http://foo"') name,
2 extractvalue(value(t), '/wbi:content/wbi:value','xmlns:wbi="http://foo"') status
3 from yourdata,
4 table(xmlsequence(extract(xmltype(c), '/wbi:event/wbi:appData/wbi:content', 'xmlns:wbi="http://foo"'))) t
5
SQL> /
NAME STATUS
--------------- ---------------
1st_status Success
2nd_status Failure
答案 1 :(得分:0)
你可以尝试::
SELECT extractvalue(xmltype(xmlcol), 'xpath') FROM yourtable
但需要检查xmltype是否适用于CLOB数据类型。