简体   繁体   English

PostgreSQL中的Oracle EXTRACT xml

[英]Oracle EXTRACT xml in PostgreSQL

I'm right in the middle of migration from Oracle to PostgreSQL and I have problem with something like that: 我在从Oracle迁移到PostgreSQL的过程中是对的,并且我对以下问题有疑问:

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

How to convert it on PostgreSQL? 如何在PostgreSQL上转换它? Thanks in advance 提前致谢

As far as I can tell this is using XMLAGG only because Oracle's listag() can't handle strings larger than 4K (or 32K in Oracle 12). 据我所知,之所以使用XMLAGG仅是因为Oracle的listag()无法处理大于4K(或Oracle 12中为32K)的字符串。

So I think what you want is a simple: 所以我认为您想要的是一个简单的方法:

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

If docnum can be NULL you maybe want: 如果docnum可以为NULL ,则可能需要:

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

because concat() will treat null values as an empty string ( || will yield null if any of the values involved is null ) 因为concat()会将null值视为空字符串(如果所涉及的任何值为null ||将产生null

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM