Postgresql 正则表达式|在字符串末尾添加3个字符

Postgresql 正则表达式|在字符串末尾添加3个字符,postgresql,text,bulk,string-aggregation,Postgresql,Text,Bulk,String Aggregation,我有多个使用string_agg函数的查询,我们正在迁移到一个更新的postgres版本,这个特定的查询现在需要一个分隔符,我们只需要在使用string_agg的每一行中添加这个字符串“” 以下是我们目前拥有的一个示例: string_agg('|'||mu_to.unit||(pa.measure*(mu.base_multiplier/mu_to.base_multiplier))::numeric||CAST(' ' AS varchar)||mu_to.unit_display) 它需

我有多个使用string_agg函数的查询,我们正在迁移到一个更新的postgres版本,这个特定的查询现在需要一个分隔符,我们只需要在使用string_agg的每一行中添加这个字符串“”

以下是我们目前拥有的一个示例:

string_agg('|'||mu_to.unit||(pa.measure*(mu.base_multiplier/mu_to.base_multiplier))::numeric||CAST(' ' AS varchar)||mu_to.unit_display)
它需要这样结束:

  string_agg('|'||mu_to.unit||(pa.measure*(mu.base_multiplier/mu_to.base_multiplier))::numeric||CAST(' ' AS varchar)||mu_to.unit_display,'')
string_agg('#attribute_'||attribute_id::varchar||':'||attribute) as attr
string_agg('#attribute_'||attribute_id::varchar||':'||attribute,'') as attr
然后我们有这样的东西:

  string_agg('|'||mu_to.unit||(pa.measure*(mu.base_multiplier/mu_to.base_multiplier))::numeric||CAST(' ' AS varchar)||mu_to.unit_display,'')
string_agg('#attribute_'||attribute_id::varchar||':'||attribute) as attr
string_agg('#attribute_'||attribute_id::varchar||':'||attribute,'') as attr
它需要这样结束:

  string_agg('|'||mu_to.unit||(pa.measure*(mu.base_multiplier/mu_to.base_multiplier))::numeric||CAST(' ' AS varchar)||mu_to.unit_display,'')
string_agg('#attribute_'||attribute_id::varchar||':'||attribute) as attr
string_agg('#attribute_'||attribute_id::varchar||':'||attribute,'') as attr
有67个报告中的这些行随机出现,并且不总是相同的字段/表名称,因此我正在寻找一种方法来一次性更改所有字段/表名称,并批量添加分隔符,以避免手动编辑所有67行。 它类似于findstring\u agg(查找最后一个括号并添加,''

我想这将是一种搜索替代,但不是100%确定我如何才能做到这一点


谢谢,

您现在使用的是什么?从来没有发布过一个版本的PostgreSQL,其中string_agg的第二个参数是可选的。(在9.0的开发周期中,有一段时间它是可选的,但在发布前已经更改了)。您真的使用了10年的PostgreSQL开发版本吗


也许您有一个名为string_agg的用户定义聚合,它接受一个参数?但是在这种情况下,为什么您的升级方法不重新创建它?

我们使用的是postgres 8.4,似乎这不是一个用户定义的函数。我们刚刚在一个新服务器上安装了新版本,并且正在迁移所有报告。实际上,我有一个8.4的副本。22左右,并且没有系统定义的字符串\u agg聚合(您可以在psql中看到使用\daS)。可能您有一些自定义编译没有正确识别自身。