sql - Oracle 在 PostgreSQL 中提取 xml

标签 sql postgresql string-aggregation

我正处于从 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/

相关文章:

mysql - 如何在 MySQL 中 UNION 10 个表?

mysql - 使用正确的 MYSQL JOIN

sql - 将 oracle 的 listagg 转换为 postgres

sql - 在 Oracle 中,如何在不创建存储过程的情况下将多行连接成一行?

java - 结果集:异常:集合类型是 TYPE_FORWARD_ONLY——为什么?

sql - 在两个可为空的 FK 之间添加 SQL XOR 约束

Django 1.8.2 : Error creating new content types

postgresql - pg_toast_2619 中 toast 值 37946637 缺少 block 号 0

python - Postgres DateTimeField 时间不正确

sql - 在MSSQL中模拟group_concat,列名不明确?