본문 바로가기

프로그램/oracle

[ORACLE]오라클 정규표현식(regexp_)

반응형


- 유닉스 용 정규표현식을 사용할 수 있음
- clob에서 사용 가능하고, blob과 xml타입은 테스트해보지 못함


* 마지막 argument 로 사용 가능.
i : 대소문자 구분 안함
c : 대소문자 구분
n : new line 도 포함하여 매칭
m : 멀티라인 모드


* regexp_substr(컬럼, 정규식문자, 시작위치, 발생위치, matching arg)

- 발생위치 : 정규식문자 에 해당하는 것이 여러번 반복될 경우로 보임


* regexp_like(컬럼, 정규식문자)

select * from board
where regexp_ilke(cnts, '[호빵]{2}')


* regexp_replace(컬럼, 정규식문자)

select a.*, regexp_replace(cnts, '[a-z]*{3}', 'ddd')

from board


*regexp_instr(컬럼, 정규식문자)

select a.*, regexp_instr(cnts, '(호빵)', '(빵야)')
from board


http://www.oracle.com/technology/global/kr/oramag/webcolumns/2003/techarticles/rischert_regexp_pt1.html#t1
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm#i1007663


* 입력받은 글자 중 짝수번쨰 글자만 * 로 치환

select regexp_replace(regexp_replace('babolsk', '(.{2})', '\1*'), '(.\*)', '*') 

from dual


(.{2}) : 입력받은 글자를 2글자 단위로 그룹핑

\1* : 그룹핑된 결과값을 "결과값 || *" 형태로 변경, ba => ba*, bo => bo*, ls => ls*

(.\*) : 한글자와 * 로 그룹핑 a*, o*


참고 url 

http://cluster1.cafe.daum.net/_c21_/bbs_search_read?grpid=xghl&fldid=doz&datanum=5&openArticle=true&docid=xghldoz520090919111601