[英]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_REPLACE
與REGEXP_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.