首页 > 解决方案 > PostgreSQL 中的 Oracle EXTRACT xml

问题描述

我正处于从 Oracle 迁移到 PostgreSQL 的过程中,我遇到了这样的问题:

RTRIM(XMLAGG(XMLELEMENT(e,'WZ-'||C.docnum,'; ')
.EXTRACT('//text()') ORDER BY C.docnum).GetClobVal(),'; ') As x

如何在 PostgreSQL 上转换它?提前致谢

标签: sqlpostgresqlstring-aggregation

解决方案


据我所知,这XMLAGG只是因为 Oraclelistag()无法处理大于 4K(或 Oracle 12 中的 32K)的字符串。

所以我认为你想要的是一个简单的:

string_agg('WZ-'||c.docnum, '; ' order by c.docnum)

如果docnum可以,NULL您可能想要:

string_agg(concat('WZ-', c.docnum), '; ' order by c.docnum)

因为concat()会将null值视为空字符串(如果涉及的任何值是,||则将产生)nullnull


推荐阅读