PostgreSQL中的Oracle提取xml 我正处于从甲骨文到PostgreSQL的迁移过程中,我遇到了类似的问题: RTRIM(XMLAGG(XMLELEMENT(e,'WZ-'||C.docnum,'; ') .EXTRACT('//text()') ORDER BY C.docnum).GetClobVal(),'; ') As x

PostgreSQL中的Oracle提取xml 我正处于从甲骨文到PostgreSQL的迁移过程中,我遇到了类似的问题: RTRIM(XMLAGG(XMLELEMENT(e,'WZ-'||C.docnum,'; ') .EXTRACT('//text()') ORDER BY C.docnum).GetClobVal(),'; ') As x,sql,postgresql,string-aggregation,Sql,Postgresql,String Aggregation,如何在PostgreSQL上转换它? 提前感谢据我所知,这是因为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值视为空

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

据我所知,这是因为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

据我所知,这是在使用
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()?不,但是一匹没有名字的马能起作用。感谢您的快速响应:-)一匹没有名字的马是一个传奇!是否尝试使用
XPATH
?不,但是一匹没有名字的马能起作用。感谢您的快速响应:-)一匹没有名字的马是一个传奇!