【发布时间】:2014-11-22 06:07:18
【问题描述】:
我有一个 TEXT 类型的 PostgreSQL 列中的数据,我需要对其进行一些字符替换。具体来说,我想用花括号替换方括号。问题是我只想替换深度不超过两层的括号,如果你包括主括号的话。这些字符串可能很长,所以我认为正则表达式可能是要走的路(regexp_replace 函数),但我不擅长正则表达式。这是一个这样的值的示例:
[0,0,0,[12,2],0,0,[12,[1,2,3]],12,0,[12,2,[2]],12,0,12,0,0]
所以我希望这个字符串更改为:
{0,0,0,{12,2},0,0,{12,[1,2,3]},12,0,{12,2,[2]},12,0,12,0,0}
提前致谢!
【问题讨论】:
-
哇,感谢您提供详细的解决方案。我需要一点时间来评估这些。但是,我会提到,性能是一个重要的考虑因素。我已经创建了自己的 plpgsql 解决方案,但是在包含超过 1000 万个字符的列上使用 position() 和 substr() 太慢了,就像我的情况一样。抱歉,我在最初的帖子@wildplasser 中没有提到这一点。
-
我会进一步提到我已经开始使用 plpythonu 解决方案,但当前未安装该语言扩展,并且尝试安装它时出现错误。我可能不得不硬着头皮想办法。
标签: regex postgresql