【发布时间】:2018-04-17 16:19:54
【问题描述】:
我将以下 XML 作为 CLOB 存储在数据库中,我想从下面给出的数据中SELECT hiPolicyYear 标记的值。
<?xml version="1.0"?>
<boForm>
<boField>
<name>hiLeaveTypeDesc_1</name>
<value>Annual Leave</value>
</boField>
<boField>
<name>dpStartDate_1</name>
<value>20180108 000000</value>
</boField>
<boField>
<name>dpEndDate_1</name>
<value>20180121 000000</value>
</boField>
<boField>
<name>hiPolicyYear</name>
<value>2018</value>
</boField>
</boForm>
我试过下面的sql:
SELECT --XMLTYPE(BUSOBJ_XML)
.extract('//boField//value//text()')
.getStringVal()
XMLTYPE(BUSOBJ_XML)
.extract('//boField//value//text()')
.getStringVal()
FROM business_object where busobj_id in ( 6854135, 6419639);
但是在 value 字段中给了我来自 XML 的所有值,我什至尝试像这样添加 where 子句:
SELECT XMLTYPE(BUSOBJ_XML)
.extract('//boField//value//text()')
.getStringVal()
但这给出了 null FROM business_object where busobj_id in (6854135, 6419639) 和 XMLTYPE(BUSOBJ_XML).extract('//boField//name//text()').getStringVal() = 'hiPolicyYear';
【问题讨论】:
-
到目前为止你尝试了什么?
-
SELECT --XMLTYPE(BUSOBJ_XML).extract('//boField//value//text()').getStringVal() XMLTYPE(BUSOBJ_XML).extract('//boField//value //text()').getStringVal() FROM business_object where busobj_id in (6854135, 6419639);
-
但是在 value 字段中给了我来自 XML 的所有值,我什至尝试像这样添加 where 子句:SELECT XMLTYPE(BUSOBJ_XML).extract('//boField//value//text ()').getStringVal() 但这会给出 null FROM business_object where busobj_id in (6854135, 6419639) 和 XMLTYPE(BUSOBJ_XML).extract('//boField//name//text()').getStringVal() = ' hiPolicyYear';
-
请在您的问题中直接包含此信息
-
在问题本身中添加了来自 cmets 的额外 sql 语句。