【问题标题】:How to get value XML blob type in PLSQL?如何在 PLSQL 中获取值 XML blob 类型?
【发布时间】:2018-08-15 05:27:39
【问题描述】:

我有这样的数据 XML 格式。

<"id=1">
   <"a">Test<"/a">
   <"b">Test2<"/b">
   <"c">Test3<"/c">

如何获取字段 XMLData 中的 C 值?

*value C is Test3

【问题讨论】:

  • 您的数据不是有效的 XML
  • 什么是“XML blob 类型”?

标签: xml oracle plsql plsqldeveloper


【解决方案1】:

如何获取字段 XMLData 中的 C 值?

正如@Wernfried Domscheit 所述,您的xml 看起来不正确。请参阅下面的一种方法:

create table traptabclob(testclob clob);
/

insert into traptabclob 
values
('<?xml version="1.0" encoding="UTF-8"?>
<DCResponse>
 <id>
   <Field key="a">Test</Field>
   <Field key="b">Test2</Field>
   <Field key="c">Test3</Field> 
  </id>                            
</DCResponse>');
/

查询:

SELECT 
EXTRACTVALUE(xmltype(testclob), '/DCResponse/id/Field[@key="c"]') col1
FROM traptabclob;

输出:

Col1
----
Test3

DEMO

编辑:

感谢您的回复,我的数据没有标签&lt;?xml&gt; version="1.0".... 我的数据就像&lt;row&gt; id="1"&gt;&lt;a&gt;Test&lt;/a&gt;&lt;b&gt;Test2&lt;/b&gt;&lt;/row&gt;,看起来像xml 类型但我不知道这是xml 类型。谢谢

请看我刚刚给出了一个有效的 xml 文件示例,它通常包含 &lt;?xml&gt; version="1.0"....。但是,您的 xml 代码的问题是将标签放入 "。看看下面它是如何工作的:

create table traptabclob(testclob clob);
insert into traptabclob values('
 <id>
   <a>Test</a>
   <b>Test2</b>
   <c>Test3</c> 
  </id>');

查询:

SELECT EXTRACTVALUE(xmltype(testclob), '/id/c') col1 
FROM traptabclob ;

输出:

Col1
----
Test3

DEMO 1

【讨论】:

  • 我试过 SELECT EXTRACTVALUE(xmltype(testclob), '/ROW/c2') col1 FROM traptabclob in sqlfiddle,它是有效的,但是当我在 sql developer 尝试时它不起作用
  • @aldiyudha 你能编辑你的问题并提出你尝试的内容吗?
  • 感谢您的回复,它可以工作但我没有使用xmltype函数,因为我的数据已经是xmltype了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-11
  • 2011-09-11
  • 2011-06-28
  • 1970-01-01
  • 2017-11-10
  • 2017-02-12
相关资源
最近更新 更多