app购彩网平台

好评猫-专业服务器租用知识门户网站!易记域名:www.haopingmao.com

日本VPS服务器如何解决PostgreSQL中的Oracle LISTAGG函数

chen 日本VPS服务器 2021-08-05 10:39:24 0

  这个博客讨论了Oracle中的LISTAGG函数,日本VPS服务器app购彩网平台以及如何在PostgreSQL 12和EDB Postgres AdvancedServer中实现类似的功能。这是企业从Oracle迁移到PostgreSQL时最常见的挑战之一。

  

  1. 日本VPS服务器Oracle LISTAGG函数

  一个日本VPS服务器。LISTAGG句法

  b.LISTAGG日本VPS服务器函数类型

  2.日本VPS服务器 LISTAGG兼容性Oracle VS.PostgreSQL VS。EDB Postgres高级服务器

app购彩网平台  一个。PostgreSQL中的LISTAGG函数支持

  b.EDB Postgre高级服务器中的LISTAGG功能支持

  3. LISTAGG的例子(.)在组内(由…订购)

  4.日本VPS服务器app购彩网平台 LISTAGG的例子(.)在组内(.的命令)超过(由.划分)

  Oracle中的LISTAGG函数

app购彩网平台  Oracle LISTAGG()函数是一个聚合函数,它将数据从多个行转换为一个由指定分隔符分隔的值列表。OracleLISTAGG函数通常用于将多行的值降为单个值,该值可以是逗号分隔值(Csv)列表或其他人类可读的报告格式。

app购彩网平台  Oracle LISTAGG语法

  LISTAGG(measure_expr [, 'delimiter'])

app购彩网平台  WITHIN GROUP (order_by_clause) [OVER query_partition_clause]

  参考链接

  对于Oracle LISTAGG函数,如果测量列是RAW,则返回数据类型为RAW;否则返回值为VARCHAR 2。因此,如果任何字符串聚合超出指定的数据类型,则可能会将其错误作为“字符串连接的结果太长了”。

app购彩网平台  Oracle LISTAGG函数类型

  类型描述

  LISTAGG(.)

app购彩网平台  在组内(.的命令)LISTAGG列使用分隔符分隔的列表进行聚合。使用WITH组将返回每组一行。

  LISTAGG(.论溢出误差)

  在组内(.的命令)如果级联字符串比返回数据类型长,那么就会出现“ora-01489”错误。使用ON溢出错误子句将优雅地处理错误。

app购彩网平台  LISTAGG(.关于溢出截断 )

  在组内(.的命令)ON溢出截断子句不仅优雅地处理溢出错误,而且还将添加文字省略号(‘.’)还有伯爵。

app购彩网平台  LISTAGG(.关于溢出截断‘.’ )

app购彩网平台  在组内(.的命令)我们可以指定自己的截断文字(‘.’)如果我们不想使用默认省略号。

  LISTAGG(.关于溢出截断‘.’不计 )

  在组内(.的命令)我们也可以不加计数而省略计数。默认值等效于显式使用WITH COUNT。

app购彩网平台  LISTAGG(.)在组内(.的命令)

app购彩网平台  超过(由.划分)Over(Partitionby)子句将返回所有行,并复制分区中每一行的LISTAGG结果。

  现在,让我们看看我们在PostgreSQL 12和EDB Postgres AdvancedServer 12中有什么样的类似支持。

app购彩网平台  LISTAGG兼容性Oracle VS.PostgreSQL VS。EDB Postgres高级服务器

  此兼容性图表提供了与EDB Postgres高级服务器.

app购彩网平台  Oracle 12c LISTAGG函数模型PostgreSQL 12中的支持EDB Postgres高级服务器12的支持

app购彩网平台  LISTAGG(.)

app购彩网平台  在组内(.的命令)弦乐(.)由.命令)或

  阵列AGG(.由.命令)与甲骨文相同

  LISTAGG(.论溢出误差)

app购彩网平台  在组内(.的命令)不可得不可得

app购彩网平台  LISTAGG(.关于溢出截断 )

  在组内(.的命令)不可得不可得

  LISTAGG(.关于溢出截断‘.’ )

  在组内(.的命令)不可得不可得

  LISTAGG(.关于溢出截断‘.’不计 )

  在组内(.的命令)不可得不可得

  LISTAGG(.)在组内(.的命令)

  超过(由.划分)String_agg(.)越过(由.隔断..。由.命令)与甲骨文相同

  PostgreSQL中的LISTAGG函数支持

  与其他数据库一样,PostgreSQL也有许多字符串聚合表达式和函数带着逐项命令条款和过滤条款。对于Oracle LISTAGG这样的字符串聚合,有两个函数,字符串AGG和阵列AGG。这些功能并不涵盖Oracle LISTAGG中的所有功能,但提供了字符串聚合的基本功能。

app购彩网平台  PostgreSQL数组_agg函数可用于字符串聚合,但我们需要在其之上进行另一次调用,以便使用数组_to_string函数将聚合结果集从数组转换为字符串。如果有一个较大的聚合结果集,那么性能开销会很小,因此建议使用String_agg函数。

  PostgreSQL String_agg函数功能有限,不包括对“串连接的结果太长了”类似于Oracle子句中的溢出错误、溢出截断或溢出截断时的错误。不算。但是,String_agg的返回类型是BYTEA/Text数据类型,并且足够大,足以处理大型字符串聚合结果集。

  PostgreSQL语法

app购彩网平台  postgres=# \df string_agg

  List of functions

app购彩网平台  Schema | Name | Result data type | Argument data types | Type

  ------------+------------+------------------+---------------------+------

  pg_catalog | string_agg | bytea | bytea, bytea | agg

app购彩网平台  pg_catalog | string_agg | text | text, text | agg

  (2 rows)

  EDB Postgres高级服务器(Oracle兼容性数据库)中的LISTAGG函数

app购彩网平台  最新的EDB Postgres高级服务器(Oracle兼容性)版本12,支持两个聚合函数:LISTAGG和中位数。

  电子发展局邮集发行债券

app购彩网平台  EDB Postgres AdvancedServer是开源PostgreSQL的增强型版本,除了具有Oracle数据库兼容性之外,还添加了各种功能。EDB Postgres Advanced Server中的Oracle数据库兼容性层直接支持LISTAGG函数,这意味着我们可以在EDB Postgres AdvancedServer中执行相同的Oracle函数调用,而无需任何更改。

本文由好评猫(http://bzyz185.cn/vps/Japan/2021-08-05/724.html)原创,转载请注明!

版权声明

本文作者来自互联网用户,不代表好评猫立场。
如果作者发布涉及版权问题请联系我们删除,谢谢!

下一篇:返回列表