繁体   English   中英

在Oracle中使用空格提取函数

[英]Extract function in oracle with space

我在Oracle11g表CLOB中有一个COLUMN作为数据类型,其值如下:

列数据

<Nodes>
  <Node NodeType="Start"/>
  <Node NodeType="Node1"/>
  <Node NodeType="Node2"/>
  <Node NodeType="Node3"/>
  <Node NodeType="Node4"/>
</Nodes>

当我如下运行查询

QUERY

select EXTRACT(XMLTYPE(Node_XML), /Nodes/Node/@NodeType) from table_name where pk='key1';

输出:

StartNode1Node2Node3Node4

但我需要ouptut作为:

预期产量:

Start  Node1  Node2  Node3  Node4

我需要一个空格(或任何定界符)才能在Java代码中使用查询。 oracle中是否还有其他功能可以实现此目的?

提前致谢

由于从11g起,不推荐使用EXTRACTEXTRACTVALUE ,因此听起来像是XMLTABLELISTAGG的工作:

with sample_data as (select 1 id, '<Nodes>
  <Node NodeType="Start"/>
  <Node NodeType="Node1"/>
  <Node NodeType="Node2"/>
  <Node NodeType="Node3"/>
  <Node NodeType="Node4"/>
</Nodes>' xdata from dual)
select sd.id,
       listagg(nodetype, ',') within group (order by x.id) nodes
from   sample_data sd
       cross join xmltable('/Nodes/Node'
                           passing xmltype(sd.xdata)
                           columns id for ordinality,
                                   nodetype varchar2(10) path '@NodeType') x
group by sd.id;

        ID NODES                                   
---------- ----------------------------------------
         1 Start,Node1,Node2,Node3,Node4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM