繁体   English   中英

如何在oracle中为xmltype显示多个节点

[英]How to display multiple node for xmltype in oracle

我在表 T_XML 中有一个列 b_xml,

T_XML
a_var      b_xml

A1         <amt1>1</amt1><amt2>1.11</amt2><bmt>1.111</bmt>.....
A2         <amt1>2</amt1><amt2>2.22</amt2><bmt>2.222</bmt>....
...
AN         <amt1>n</amt1><amt2>x</amt2><bmt>y</bmt>....

我想将 xml 转换为 csv 记录。

是否有任何查询或函数可以用来显示 b_xml 如下?

amt1,amt2,bmt...


1,1.11,1.111...
2,2.22,2.222...
....
n,x,y,...

使用XMLTABLE函数将XMLType列的结果映射到关系行和列,然后连接结果:

SELECT amt1||','||amt2||','||bmt as "Concatenated String"
  FROM XML_TAB x
 CROSS JOIN
       XMLTABLE(XMLnamespaces('http://www.example.com' as "ns"),
                'ns:Root'
                PASSING x.xml_data
                COLUMNS
                    amt1 VARCHAR2(255) PATH 'ns:amt1',
                    amt2 VARCHAR2(255) PATH 'ns:amt2',
                    bmt  VARCHAR2(255) PATH 'ns:bmt'
                    ) t;        

演示 1

或者在没有namespace选项的情况下呈现XMLType数据:

SELECT amt1||','||amt2||','||bmt as "Concatenated String"
  FROM XML_TAB x
 CROSS JOIN
       XMLTABLE('/Root'
                PASSING x.xml_data
                COLUMNS
                    amt1 VARCHAR2(255) PATH '/Root/amt1',
                    amt2 VARCHAR2(255) PATH '/Root/amt2',
                    bmt  VARCHAR2(255) PATH '/Root/bmt'
                    ) t;     

演示 2

暂无
暂无

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

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