簡體   English   中英

Oracle regexp_replace每次發生

[英]Oracle regexp_replace every occurence

我想使用regexp_replace替換String的每個匹配項(除了第一個匹配regexp_replace 下面的查詢將僅替換第二次出現的情況。

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替換了STRING的一些文本STRING了一些其他的文本

但是我需要這樣的結果。

這是測試STRING替代STRING的一些文本替代STRING的一些文本

我將REGEXP_REPLACEREGEXP_INSTR結合使用。 這個想法是使用REGEXP_REPLACE替換所有 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
)

注意:請僅作為入門者來了解這一點-我知道可以(並且應該)對其進行優化。 我希望它能有所幫助;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM