我希望使用regexp_replace
替换第一次出现的每次出现的String。以下查询将仅替换第二次出现。
select 'This is test STRING STRING some text STRING some more text'
from dual
select regexp_replace('This is test STRING STRING some text STRING some more text',
'STRING',
'REPLACED-STRING' ,
1,
2)
from dual
结果是,
这是测试STRING REPLACED-STRING一些文字STRING更多文字
但我需要这样的结果。
这是测试STRING REPLACED-STRING一些文字替换了一些文字
答案 0 :(得分:0)
我会将REGEXP_REPLACE
与REGEXP_INSTR
结合使用。我们的想法是使用REGEXP_REPLACE
替换所有出现位置从REGEXP_INSTR
开始返回(此处指定它应该返回搜索字符串的第二次出现)。
这个片段说明了这个想法:
regexp_replace(
'This is test STRING STRING some text STRING some more text',
'STRING',
'REPLACED-STRING',
regexp_instr(
'This is test STRING STRING some text STRING some more text',
'STRING',
1,2,1
),
0
)
注意:请仅将其理解为启动器 - 我知道它可以进行优化(并且应该是)。我希望它有所帮助;-) *乔斯特