问题描述
我有多个使用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
有67个报告,其中这些行随机出现,但并不总是相同的字段/表名,因此,我正在寻找一种方法来一次性更改所有内容并批量添加定界符,以免手动编辑所有67个。 就像找到 string_agg(寻找最后一个括号并添加,''
我想这将是某种搜索替换,但不是100%确定如何实现。
谢谢
解决方法
您现在正在使用什么?从未有PostgreSQL的发行版,其中string_agg的第二个参数是可选的。 (在9.0的开发周期中有一段时间是可选的,但在发布前已更改)。您是否真的使用了10年的PostgreSQL开发版本?
也许您有一个名为string_agg的用户定义的聚合,它带有一个参数?但是在那种情况下,为什么不重新创建升级方法呢?