본문 바로가기

Study/Oracle

오라클 DB에서 정규식과 관련된 간단한 예제들


정규식표현_20110526.docx



오라클 데이터베이스에서 정규식인 "REGEXP_" 를 이용하면 다양한 데이터를 얻을수 있을뿐 아니라, 데이터 변환시에 발생하는 에러의 원인인 데이터 자체를 추출할수 있어, 문제 해결에 도움을 줄수 있다.

첨부하는 파일에는 기본적인 사용 사례가 작성되어져 있으므로 REPEXP 정규식을 처음 접하는 사용자에게 다소의 도움을 줄수 있을거란고 생각 합니다.

 

기호의 의미는 아래와 같습니다.

^  $   ---> 각 라인의 시작과 끝을 표시

(   )   ---> 그룹의 시작과 끝을 표시

|       ---> 위 그룹의 표시와 함께 사용되며 선택(OR) 의 의미

[  ]    ---> 문자 패턴을 표시하며, 나열된 모든 문자가 "OR" 조건으로 올수 있다

 

문장 해석 사례

^       ---> 라인 시작

(       ---> 그룹 시작

|       ---> 이거나         2[123459] ---> 21,22,23,24,25,29

)       ---> 그룹 끝

$       ---> 아린 끝

 

 간단하게 테스트한 예제들은 첨부파일을 참조 하시면 상황에 알맞은 데이터를 추출할수 있는 응용력을 발휘할수 있으리라고 생각 됩니다.

 

regexp_like(user_name, '^[가-깆].*')

 

like 'J%'  =  regexp_like(ename, '^J')

 

regexp_like(ename, '^J.(N|M)')  --> J 로 시작하며, 세번째 문자가 M 또는 N 인 데이터를 찾는것

 

. (period)  --> 임의의 한 문자

 

\.  --> \(역슬래시) 뒤에 나오는 . 은 Meta character 아닌 리터럴 문자 (ESCAPE)

           즉,  ???.??.????.????? 의 패턴으로

 

            where regexp_like(phone, '[0-9]{3}\.[0-9]{2}\.[0-9]{4}\.[0-9]{6}')

            where regexp_like(phone, '\d{3}\.d{2}\.d{4}\.d{6}')

 

[0-9]   숫자 0 ~ 9

\d      숫자문자

{3}      3번 반복

 

regexp_like('^ab*')   ---> ab 로 시작하는것 검색

                 '^The'    ---> The 로 시작하는 문자열

                 'ab*'      ---> a 다음에 b 가 0개 이상등 다수

                 'notice'   ---> notice 가 들어있는 문자열

 

regexp_like(zip, '[^[:digit:]]')

             zip  

             ab123

             123xy

             007ab

             abcxy

5 개의 숫자로 구성된 우편번호 패턴의 시작부분 반환   --->  [[:digit:]]{5}

 

where regexp_like(prof_no,'^[^LC || ^PW]')

     --> prof_no 중에서 LC로 시작 하거나 PW로 시작하는것을 제외한 것들을 출력

 

substr 

     [^ ,*]*  --->  패턴에 매치되는 문자열이 반환된다

 

regexp_substr('first field, second field, third field' , ',[^,]*,')

                ---> ,second field,

 

regexp_substr('success | 20101101 | 202010' , '[^ |]+', 1,1) from dual ;

regexp_substr('success | 20101101 | 202010' , '[^ |]+', 1,2) from dual ;

regexp_substr('success | 20101101 | 202010' , '[^ |]+', 1,3) from dual ;

                                                                                   

regexp_substr('아빠_엄마_형님_동생', '[^_]+', 1,1) from dual ;

regexp_substr('아빠_엄마_형님_동생', '[^_]+', 1,2) from dual ;

regexp_substr('아빠_엄마_형님_동생', '[^_]+', 1,3) from dual ;

              

[:alnum:]

[:alpha:]

[:blank:]

[:cntrl:]

[:space:]

[:xdigit;]

 

regexp_substr('Employee Name and Age : Adam, Dana, 28', '[[:digit:]]+')

           ---> 28

 

숫자만 추출  --->  '[0-9]+'

문자만 추출  --->  '[^0-9]+'



[출처] 오라클 DB에서 정규식과 관련된 간단한 예제들

'Study > Oracle' 카테고리의 다른 글

토드 유용한 단축키  (0) 2014.04.02
오라클 프로시저 export  (0) 2014.03.19
오라클 - NLS_DATE_FORMAT 변경  (0) 2013.11.04
오라클 User뷰  (0) 2013.07.19
오라클 계층구조(트리구조) START WITH, CONNECT BY  (0) 2013.03.07