Postgresql regex_replace 逗号,单引号和双引号
Posted
技术标签:
【中文标题】Postgresql regex_replace 逗号,单引号和双引号【英文标题】:Postgresql regex_replace comma, single and double quotes in a single 【发布时间】:2020-06-13 02:08:15 【问题描述】:我有一个由双引号、单引号和逗号组成的字符串。我想用 regex_replace 替换所有出现的它们。
试过了
REGEXP_REPLACE(translate (links, '"',''), '['''''',]' , '')
它替换第一次出现的逗号而不是第二次。
'https://google.com/khjdbgksdngksd#/","https://google.com/khjdbgksdngksd#/","'
【问题讨论】:
换成什么? 【参考方案1】:为什么要混合使用 TRANSLATE 和 REGEXP_REPLACE?只需选择一个并使用它,因为任何一个都可以为所欲为。
如果你想让 REGEXP_REPLACE 替换 所有 实例,你必须给它第四个参数(标志参数)'g' 来代表 'global',否则它会在第一次匹配和替换后停止.
另外,为了保持理智,当所引用的事物有单引号(你的引号相当多)时,我会使用美元引用。
使用 TRANSLATE 可能是更好的工作工具,但您的标题专门针对 REGEXP_REPLACE,所以:
REGEXP_REPLACE(links, $$[',"]$$, '', 'g');
【讨论】:
【参考方案2】:为什么不直接使用replace()
?
select replace(replace(replace(links, '"', ''), '''', ''), ',', '')
或者更简单地说,使用translate()
:
select translate(links, '"'',', '')
【讨论】:
以上是关于Postgresql regex_replace 逗号,单引号和双引号的主要内容,如果未能解决你的问题,请参考以下文章
如何在 regex_replace() 中使用 db 列名 - presto