Oracle - 将 XML 节点值提取到以分号作为分隔符的列表中
Posted
技术标签:
【中文标题】Oracle - 将 XML 节点值提取到以分号作为分隔符的列表中【英文标题】:Oracle - Extract XML nodes values into a list with semicolon as separators 【发布时间】:2021-09-03 06:17:44 【问题描述】:我有一个具有以下结构的 XMLType 对象:
<Parameter>
<Values>
<Value>abc</Value>
<Value>def</Value>
<Value>ghi</Value>
</Values>
</Parameter>
我想将值提取为以分号作为分隔符的列表
预期的输出是:abc;def;ghi
我尝试了很多我在互联网上找到的方法(尤其是 XMLTable),但找不到适用于我的具体情况的方法。
任何帮助将不胜感激!
提前致谢
【问题讨论】:
【参考方案1】:你可以使用:
SELECT LISTAGG(x.value, ';') WITHIN GROUP (ORDER BY ROWNUM) AS list
FROM table_name t
CROSS JOIN XMLTABLE(
'/Parameter/Values/Value'
PASSING XMLTYPE(t.xml)
COLUMNS
value VARCHAR2(3) PATH './text()'
) x
其中,对于您的示例数据:
CREATE TABLE table_name ( xml ) AS
SELECT '<Parameter>
<Values>
<Value>abc</Value>
<Value>def</Value>
<Value>ghi</Value>
</Values>
</Parameter>' FROM DUAL;
哪些输出:
LIST abc;def;ghi
db小提琴here
【讨论】:
我可以快速将其改编为我自己的代码,并获得了预期的结果。非常感谢您的快速回复!以上是关于Oracle - 将 XML 节点值提取到以分号作为分隔符的列表中的主要内容,如果未能解决你的问题,请参考以下文章