본문 바로가기
Oracle

[Oracle] 정규표현식 함수 REGEXP

by byeongoo 2019. 10. 31.

1. REGEXP_SUBSTR

 - SUBSTR 함수의 기능을 확장하였습니다. 주어진 문자열을 대상으로 정규 표현식 패턴을 수행하여, 일치하는 하위 문자열을 반환합니다.
 - 문법 : REGEXP_SUBSTR(srcstr, pattern, [,position[,occurrence[,match_option]]])
 - srcstr : 소스 문자열
 - position : Oracle이 문자열에서 특정 문자를 어디에서 찾아야 하는지 위치를 나타냄. 기본으로 1로 설정되어 있으므로, 문자열의 처음부터 검색을 시작.
 - occurrence : 검색하고자 하는 문자열에서 특정 문자의 발생 횟수. 기본으로 1로 설정되어 있으며, 이는 Oracle이 문자열에서 첫번째 발생 pattern을 찾는다는 의미.
 - match_option : match를 시도할 때의 옵션

SELECT  REGEXP_SUBSTR(email, '[^@]+', 1, 1) AS "ID"
      , REGEXP_SUBSTR(email, '[^@]+', 1, 2) AS "MailAddr"
FROM ( 
        SELECT 'hellokitty@empal.com' email
        FROM dual 
      )
;

2. REGEXP_LIKE

정규표현을 사용해 컬럼의 데이터를 LIKE 검색합니다. 문자 데이터 필드에 사용할 수 있으나 LONG에는 사용이 불가능합니다. VARCHAR2, CHAR, CLOB, NVARCHAR2, NCHAR, NCLOB )

SELECT * FROM A WHERE REGEXP_LIKE (COL1, '[0-9][a-Z]');

SELECT * FROM B WHERE REGEXP_LIKE ( COL2, '^([[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2})$');

3. REGEXP_INSTR

지정한 정규표현식을 만족하는 최초문자 위치를 리턴한다. 검색 시작위치의 지정이 가능합니다.

SELECT REGEXP_INSTR(COL3, '#') FROM C

컬럼3에서 문자'#'의 인덱스를 조회한다 (없으면 0)

4. REGEXP_REPLACE

지정한 정규표현식에 해당하는 문자열을 다른 문자열로 변경합니다.

SELECT '04010ABCDEF135' COL4, REGEXP_REPLACE( '04010ABCDEF135', '[0-3]', '@') COL5 FROM D

문자 '0', '1', '2', '3' 를 '@'로 변경한다.

5. REGEXP_COUNT

지정한 정규표현식에 해당하는 문자열이 몇개인지 확인할 수 있습니다.

SELECT 'bb-01-d3' COL6, REGEXP_COUNT( 'bb-01'd3', '-') FROM E

 

 REFERENCE

https://freezm.tistory.com/entry/2011091401

 

오라클 정규표현식 함수 (REGEXP_xxx)

1. REGEXP_SUBSTR 정규표현식을 사용하여 문자열에서 필요한 데이터를 취득할 수 있다. 아래에서는 '|'기호를 구분자로 사용하여 데이터를 분리한 후 인덱스를 사용하여 취득할 수 있다. WITH TAB AS ( SELECT '서..

freezm.tistory.com

https://cheezred.tistory.com/35

 

오라클 정규식 (REGEXP)의 사용

10g 이상부터 가능 -------------------------- ★ 오라클 정규식 사용 팁 Oracle 10g에서는 REGEXP_로 시작하는 함수를 지원합니다. Regular Expression이라고 하죠~ 1. REGEXP_LIKE - LIKE 연산자와 유사하며,..

cheezred.tistory.com

 

'Oracle' 카테고리의 다른 글

[Oracle] Trim  (0) 2019.11.06
[Oracle] 쿼리 실행 순서  (0) 2019.10.31
[Oracle] PL/SQL %TYPE  (0) 2019.10.28
[Oracle] INDEX_DESC HINT  (0) 2019.09.09
[Oracle] FULL SCAN HINT  (0) 2019.09.09