2017-07-04 15 views
2

の文字グループの最後の出現の交換:私はOracle 11gのテーブルに、以下のような文字列持つオラクルREGEXP_REPLACE

ABCDEF000xyz12345abcdefgh 

GHIJK0000def67890abcdefgh 

つまり、文字列は3つの文字に続いて、一連のゼロが続く大文字で始まります、数字と文字を再度入力します。

xyz12345abcdefghdef67890abcdefghを、OracleでREGEXP_REPLACEを使用して特定の文字列に置き換えるにはどうすればよいですか?

+0

以下のいずれかの方法を試しましたか?はいの場合、まだ何がブロックされていますか? –

答えて

1

あなただけあなたが言及したタイプのレコードを選択する必要がある場合は、

select REGEXP_REPLACE(col, '^([[:upper:]]+0+)[[:alpha:]]{3}\d+[[:alpha:]]+$', '\1NEW_STRING') 

使用することを検討している

  • ^ - 文字列
  • ([[:upper:]]+0+)の開始 - 取り込みグループ#1の一致:
    • [[:upper:]]+から1つの以上の大文字
    • 0+ - 一つ以上の0文字
  • [[:alpha:]]{3}から3アルファベット文字
  • \d+から1桁以上
  • [[:alpha:]]+から1又はそれ以上のアルファベット文字
  • $ - 文字列の最後。

置換文字列で\1がキャプチャグループ#1バッファに格納された値を挿入後方参照あります。

enter image description here

online demoを参照してください。

1
select regexp_replace(column_name,'(.*)([0]{2,})(.*)','\1\2xxxx') from table_name; 
関連する問題