我正处于从 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
)
关于sql - Oracle 在 PostgreSQL 中提取 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50905325/