0

を使用して、最初の出現を除いてすべての文字列を置き換えたいと思いregexp_replaceます。以下のクエリは、2 番目のオカレンスのみを置き換えます。

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 いくつかのテキスト REPLACED-STRING いくつかのテキスト

4

1 に答える 1

0

REGEXP_REPLACEと組み合わせて使用​​しREGEXP_INSTRます。アイデアは、開始位置のリターンを使用してすべての出現を置き換えることです (ここでは、検索文字列の 2 番目の出現を返す必要があることを指定します)。REGEXP_REPLACEREGEXP_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
)

注: これはスターターとしてのみ理解してください。最適化できることはわかっています (最適化する必要があります)。少しでもお役に立てば幸いです ;-) *Jost

于 2013-08-26T07:43:29.077 に答える