【问题标题】:Concatenate arbitrary fields using xml in Oracle在 Oracle 中使用 xml 连接任意字段
【发布时间】:2011-12-26 02:21:03
【问题描述】:

我在这里使用的是 Oracle 10gR2。

我希望能够创建一个select * from TABLE 并在一行中获得输出,其中所有列都由分隔符连接。

根据我的发现,XML 处理似乎是最好的方法。所以我有这个查询:

select dbms_xmlgen.getxml('select * from MY_TABLE') from dual;

这将返回一个 XML 代码。我现在需要的是将该 XML 处理为最终记录。一个例子可能会有所帮助:

通常的查询是:

select * form MY_TABLE

会返回:

Col1   | Col2   | Col3
a      | b      | c
z      | x      | y

现在我想做一个类似的查询

select somesxmlprocessing(dbms_xmlgen.getxml('select * from MY_TABLE'), ',') as rows
from dual

现在的结果是:

rows
a,b,c
z,x,y

诀窍是我以前不知道该表有哪些列。即,无论有多少字段有一个表,它始终是 select * from

附言: 我在all_tab_columns 中的数据上找到了一个使用聚合函数的解决方案,哪种方法有效。烦人的是它分两步执行:首先生成一个select,然后执行它。有效,但我仍然想知道一次性 xml 方式..

【问题讨论】:

  • 你能详细说明你的意思吗,我不太明白最后一段。
  • @MatthewWatson 当然可以!你有它。如果我错过了什么,请告诉我。

标签: xml oracle concatenation


【解决方案1】:

我不知道有任何构建函数可以让您执行此操作(听起来您实际上想要将表导出为 CSV?,在这种情况下,有各种工具可以执行此操作)。你需要编写一个函数来做你想做的事,这应该不会太难。可能值得通过这个ask tom thread 看看它是否对你有帮助。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 2012-08-15
  • 2021-12-09
相关资源
最近更新 更多