[英]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;
或者在没有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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.