[Oracle|오라클] REGEXP_REPLACE 다중(여러개) Replace 하는 방법 (특수문자 제거, 숫자만, 2개이상)

오라클 REGEXP_REPLACE 다중(여러개) Replace(치환) 하는 방법


오라클 10g 부터 정규식 함수가 추가 되었다. 

정규식을 사용하여 기존 함수보다 더 많은 기능을 수행한다.

기존 Replace 함수를 사용하여 여러개의 문자를 치환하기 위해서는 

해당 함수를 중첩으로 사용하였다.


REGEXP_REPLACE 함수를 한번 사용하여 여러개의 문자를 치환하는 방법을 알아보자.


 --치환할 문자를 |로 구분하여 입력
 SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs', 'Stay|Foolish|Steve', '')
   FROM DUAL

 --결과:  Hungry,  . -  Jobs
 ;

 --문자를 제거만 할꺼면 3번재 파라미터는 생략가능
 SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs', 'Stay|Foolish|Steve')
   FROM DUAL

 --결과:  Hungry,  . -  Jobs
 ;

 SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs 2005', 'Stay|Foolish|Steve', '###')
   FROM DUAL

 --결과: ### Hungry, ### ###. - ### Jobs 2005
 ;

 --특수문자 제거
 SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs', '[[:punct:]]')
   FROM DUAL

 --결과: Stay Hungry Stay Foolish  Steve Jobs
 ;

 --숫자를 제외한 모든문자 제거 (숫자만)
 SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs 2005', '[^[:digit:]]')
   FROM DUAL
 
 --결과: 2005
 ;

 --$같은 특수문자를 치환하기 위해서는 Escape 문자(\)를 붙여 줘야함
 SELECT REGEXP_REPLACE('$Stay Hungry, Stay Foolish. - Steve Jobs', '-|\$')
   FROM DUAL

 --결과: Stay Hungry, Stay Foolish.  Steve Jobs


1. 치환할 문자를 |로 구분하여 입력한다


2. 문자를 제거만 할꺼면 3번째 파라미터는 생략 가능하다


3. 3번째 파라미터에 치환될 문자를 입력한다


4. [:punct:] 문자 클래스 사용하여 특수문자만 제거 한다


5. [:digit:] 문자 클래스 사용하여 숫자가 아닌 모든 문자를 제거 한다


6. $같은 특수문자는 앞에 Escape 문자를 붙여줘야 한다


 

댓글

Designed by JB FACTORY