【发布时间】: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