【问题标题】:How to parse CLOB datatype to get Value如何解析 CLOB 数据类型以获取值
【发布时间】: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 语句。

标签: xml extract


【解决方案1】:

找到答案:

选择 himastart , busobj_id from (select extractValue(xmltype(busobj_xml), '/boForm/boField[name="hiMAStart"]/value') as himastart , busobj_id 从 business_object where busobj_id in (6854135,6419639)) where hemastart 不为空;

【讨论】:

    猜你喜欢
    • 2016-10-16
    • 1970-01-01
    • 2023-02-23
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2020-12-27
    • 1970-01-01
    相关资源
    最近更新 更多