OracleでREGEXP_REPLACE関数を使って文字列を置換

2021年11月18日

環境
Oracle 12.2.0.1.0

説明
REGEXP_REPLACEは、正規表現パターンで文字列を検索できるようにREPLACEの機能を拡張したものです。デフォルトでは、このファンクションは、
正規表現パターンのすべての出現箇所をreplace_stringに置き換えてsource_charを戻します。

使用例
1.NEWS_TBLテーブルのTITLE列の文字「-」を「*」に置き換えます

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
UPDATE NEWS_TBL SET TITLE = REGEXP_REPLACE(TITLE,'-','*')
UPDATE NEWS_TBL SET TITLE = REGEXP_REPLACE(TITLE,'-','*')
UPDATE NEWS_TBL SET TITLE = REGEXP_REPLACE(TITLE,'-','*')

2. 文字列内のすべての数値を置換します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
WITH CFT AS (
SELECT 'TEST56' S FROM DUAL UNION ALL
SELECT 'STUDY123' S FROM DUAL UNION ALL
SELECT 'K5D6F4C' S FROM DUAL
)
SELECT S "ORGSTR", REGEXP_REPLACE(S, '[0-9]', '') "MODIFIED_STRCOL"
FROM CFT;
WITH CFT AS ( SELECT 'TEST56' S FROM DUAL UNION ALL SELECT 'STUDY123' S FROM DUAL UNION ALL SELECT 'K5D6F4C' S FROM DUAL ) SELECT S "ORGSTR", REGEXP_REPLACE(S, '[0-9]', '') "MODIFIED_STRCOL" FROM CFT;
WITH CFT AS (   
  SELECT 'TEST56' S FROM DUAL UNION ALL   
  SELECT 'STUDY123' S FROM DUAL UNION ALL   
  SELECT 'K5D6F4C' S FROM DUAL   
)   
SELECT S "ORGSTR", REGEXP_REPLACE(S, '[0-9]', '') "MODIFIED_STRCOL"  
 FROM CFT;

実行結果

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ORGSTR     MODIFIED_STRCOL
TEST56     TEST
STUDY123  STUDY
K5D6F4C     KDFC
ORGSTR     MODIFIED_STRCOL TEST56     TEST STUDY123  STUDY K5D6F4C     KDFC
ORGSTR	    MODIFIED_STRCOL
TEST56	    TEST
STUDY123	 STUDY
K5D6F4C	    KDFC

 

Oracle 12c

Posted by arkgame