我正处于从Oracle迁移到PostgreSQL的过程中,我遇到了类似问题:
RTRIM(XMLAGG(XMLELEMENT(e,'WZ-'||C.docnum,'; ')
.EXTRACT('//text()') ORDER BY C.docnum).GetClobVal(),'; ') As x
如何在PostgreSQL上转换它? 提前致谢
据我所知,这只是XMLAGG
因为 Oracle 的listag()
无法处理大于 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
值视为空字符串(如果涉及的任何值null
,||
将产生null
(