블로그 이미지
잡초 개발자의 좌충우돌 이야기 yysvip

카테고리

분류 전체보기 (211)
Java Programing (24)
Web Programing (20)
Database (36)
Tool (46)
까칠한 IT (27)
까칠한 정보 (42)
까칠한 Strory (16)
까칠한 Project (0)
Total905,954
Today3,437
Yesterday7,350

달력

« » 2018.10
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

공지사항

Oracle 10g 정규 표현식

  까칠한 남자 Strory       yysvip.tistory.com       잡초 개발자 까찰한 쑤의 좌충우돌 개발 이야기

 

개요


• Oracle Database 10g에서는 문자열 검색에 있어서 정규 표현식을 지원한다. 오라클에 의해서 구현된 정규 표현식은 ASCII 데이터의 검색에 있어서 IEEE에 의해 주관되는POSIX(Operating System for UNIX) 표준과 호환된다. 뿐만 아 니라, 오라클의 다국어 기능으로 인하여 POSIX 표준 이상으로 문자열 매칭 기능 을 확장시킬 수 있다. 즉, 정규 표현식은 문자열의 검색 및 조작에 있어서 단순 및 복잡한 패턴을 모두 사용 할 수 있는 방법을 제공해준다.


• 문자열 검색과 조작은 웹 기반 애플리케이션 내의 많은 로직에서 활용되며, 지정 된 문자열에서 “San Francisco”와 같은 간단한 구문을 검색하는 단순한 기능부 터 URL을 추출하는복잡한 검색도 수행 할 수 있다. 또는, 두 번째 글자가 모음인 모든 단어를 검색 할 수도있다.


• 이러한 정규 표현식을 기존 SQL과 결합하면 오라클 데이터베이스에 저장된 데 이터의 검색및 조작 작업을 매우 강력하게 수행 할 수 있으므로, 기존의 복잡하 게 구현된 프로그램에서수행되던 작업을 간단하게 SQL에서 처리 할 수가 있다.

 

메타 문자의 사용

 

• 메타 문자는 와일드카드 문자, 반복 문자, 비일치 문자, 범위 문자와 같이 특별 한 의미를 갖는 문자이며, 이러한 사전에 정의된 문자를 이용하여 패턴 매칭 을 수행 할 수 있다.


• 다음과같은 경우에 대하여 검색을 수행해야 한다고 가정하자.


• Case 1 : 문자열이 'abc'인 문자열을 검색하라
• ․ 메타 문자열 : 'abc'
• ․ 일치 문자열 : 'abc'
• ․ 일치 되지 않는 문자열 : 'def'
• 첫 번째의 경우에서는 단일 일치 작업이 수행되었다.


Case 2 : 문자열에서 'a' 문자 다음에 어떠한 문자라도 상관없이 한 개의 문자 가 오고, 그다음에 'c' 문자가 오는 문자열을 검색하라.
• ․ 메타 문자열 : 'a.c'
• ․ 일치 문자열 : 'abc„ 'adc„ 'alc‟ 'a&c'
• 일치 되지 않는 문자열 ․ : 'abb'
• 두 번째의 경우에서는 '.'으로 정의되는 ANY 메타 문자가 사용되었다.


Case 3 : 문자열에서 'a' 문자가 반드시 한 번 이상 반복되는 문자열을 검색하라.
• ․ 메타 문자열 : 'a+'
• ․ 일치 문자열 : 'a„ 'aa'
• ․ 일치 되지 않는 문자열 : 'bbb'
• 세 번째의 경우에서 '+' 메타 문자는 기호 앞의 문자가 반드시 1회 이상 반복되어 야 함을의미한다. 또한,비일치 문자를 사용하여 검색을 수행 할 수도 있는데,비 일치 문자란 해당 문자가 지정된 문자열에서 발견되지 말아야 한다. 예를 들어, 문자열이 'a', 'b', 'c'의 문자로만 구성되지 않는 문자열을 검색하려면 다음과 같 이 비일치 문자인 '^'를 사용하면 된다.
• ․ 메타 문자열 : '[^abc]'
• ․ 일치 문자열 : 'abcdef„ 'ghi'
• ․ 일치 되지 않는 문자열 : 'abc'
• 'a'에서 'i'까지의 어떠한 문자라도 구성되지 않은 문자열을 검색하는 경우에는 다 음과 같이비일치 문자를 사용한다.
• ․ 메타 문자열 : '[^a-i]'
• ․ 일치 문자열 : 'hijk„ 'lmn‟ 일치 되지 않는 문자열 : 'abcdefghi„

 

 

 

정규 표현식 함수


REGEXP_LIKE : 이 함수는 문자 컬럼에서 주어진 패턴에 일치하는 문자열을 검색한다.쿼리의 WHERE 구문에서 이 함수를 사용하면 지 정된 정규 표현식에 일치하는 행을 리턴한다.


REGEXP_REPLACE : 이 함수는 문자 컬럼에서 주어진 패턴에 일치 하는 문자를 검색하고, 해당 패턴에 일치하는 문자가 발견 될 때마다 지정된 패턴으로 교체한다.


REGEXP_INSTR : 이 함수는 주어진 정규 표현식에 일치하는 문자 열을 검색하고, 해당문자의 위치를 정수값으로 리턴한다.


REGEXP_SUBSTR : 이 함수는 지정한 정규 표현식에 일치하는 일 부 문자열을 리턴한다.

 

 

REGEXP 함수의 사용 방법  

 

여기서, ^는 구문의 시작, $는 구문의 마지막, |는 OR을 의미한다.

 

 

패턴의 존재 여부 검색 

 

여기서 는 다음과 같은 의미를 , [^[:alpha:]] 갖는다. ․ [ : 표현식의 시작 ․ ^ : NOT ․ [:alpha:] : 알파벳․ ] : 표현식의 끝

 

 

부분 문자열 추출 예제 

 

여기서, [^ ]+는 다음과 같은 의미를 갖는다.
․ [ : 표현식의 시작 ․ ^ : NOT ․ : 공백 ․ ] : 표현식의 끝
․ +: 1개 이상 반복

 

 

패턴 교체  

 

 

정규 표현식과 CHECK 제약조건 

 

 

8장Oracle10g정규규표현식.pdf

 

8장정규표현식.pdf

 

오라클_10G_정규표현식함수.pdf

 

 

EX)

 

SELECT regexp_substr(tel1,'[^-]+',1,1) "지역번호"
,regexp_substr(tel1,'[^-]+',1,2) "국번"
,regexp_substr(tel1,'[^-]+',1,3) "번호"
FROM (
SELECT '02-111-2222' TEL1 FROM DUAL UNION ALL
SELECT '031-333-5555' TEL1 FROM DUAL
)

Posted by yysvip

최근에 달린 댓글

최근에 받은 트랙백

글 보관함