본문 바로가기
ㄱWORK, ETC/Oracle

[REGEXP_LIKE]

by YuyU유유 2021. 2. 25.
728x90
반응형

[REGEXP_LIKE]

 

  • LIKE 연산자와 유사하며, 표현식 패턴(Regular Expression Pattern)을 수행하여, 일치하는 값을 반환한다.

 

- 문법 -

 

REGEXP_LIKE(srcstr, pattern [,match_option])

 

  • srcstr : 소스 문자열, 검색하고자 하는 값.

  • pattern : Regular Expression Operator를 통해 문자열에서 특정 문자를 보다 다양한 pattern으로 검색하는 것이 가능.

  • match_option : match를 시도할 때의 옵션. 찾고자 하는 문자의 대소문자 구분이 기본으로 설정. 대소문자를 구분할 필요가 없다면 'i' 옵션 사용을 지정한다.

  • [[:digit:]] : 숫자인 것

  • [^[:digit:]] : 숫자가 아닌 것.

  • [^expression] : expression의 부정.

  • [ ] : []안에 명시되는 하나의 문자라도 일치하는 것이 있으면 나타냄.

 

- 예제1 -

 

숫자가 아닌 문자열을 찾자.

 

 WITH V_TEST AS (

  SELECT 'ABCD1234' AS C1 FROM DUAL UNION ALL

  SELECT '1234ABCD' AS C1 FROM DUAL UNION ALL

  SELECT '12345678' AS C1 FROM DUAL

)

SELECT C1

  FROM V_TEST

 WHERE REGEXP_LIKE(C1, '[^[:digit:]]');

 

- 결과 -

 

C1

--------

ABCD1234

1234ABCD

 

- 예제2 -

 

제품 이름에 'SS' 다음 'P'나 'S'를 포함하는 문자열을 찾자.

 

WITH V_TEST AS (

  SELECT 'SSA' AS C1 FROM DUAL UNION ALL

  SELECT 'SSP' AS C1 FROM DUAL UNION ALL

  SELECT 'ASSS' AS C1 FROM DUAL

)

SELECT C1

  FROM V_TEST

 WHERE REGEXP_LIKE(C1, 'SS[PS]');

 

- 결과 -

 

C1

-----

SSP

ASSS

 

[REGEXP_SUBSTR]

 

  • SUBSTR 함수의 기능을 확장함. 주어진 문자열을 대상으로 정규 표현식 패턴을 수행하여, 일치하는 하위 문자열을 반환한다.

 

- 문법 -

 

REGEXP_SUBSTR(srcstr, pattern, [,position[,occurrence[,match_option]]])

 

  • srcstr : 소스 문자열

  • position : Oracle이 문자열에서 특정 문자를 어디에서 찾아야 하는지 위치를 나타냄. 기본으로 1로 설정되어 있으므로, 문자열의 처음부터 검색을 시작.

  • occurrence : 검색하고자 하는 문자열에서 특정 문자의 발생 횟수. 기본으로 1로 설정되어 있으며, 이는 Oracle이 문자열에서 첫번째 발생 pattern을 찾는다는 의미.

  • match_option : match를 시도할 때의 옵션

 

- 예제 -

 

WITH V_TEST AS (

  SELECT 'hellokitty@empal.com' EMAIL FROM dual

)

SELECT REGEXP_SUBSTR(EMAIL, '[^@]+', 1, 1) AS "ID"

, REGEXP_SUBSTR(EMAIL, '[^@]+', 1, 2) AS "MailAddr"

FROM V_TEST;

 

- 결과 -

 

ID          MailAddr

--------  -------------

hellokitty  empal.com

 

[REGEXP_REPLACE]

 

  • 주어진 문자열을 대상으로 정규 표현식 패턴을 조사하여, 다른 문자로 대체한다.

 

- 문법 -

 

REGEXP_REPLACE(srcstr, pattern [,replacestr[,position[,occurrence[,match_option]]]])

 

  • replacestr : 대체하고자 하는 문자열을 나타낸다.

 

- 예제 -

 

WITH V_TEST AS (

  SELECT '7907051234567' SSN FROM dual

)

SELECT REGEXP_REPLACE(SSN, '[0-9]', '*', 7) AS "SSN"

FROM V_TEST;

 

- 결과 -

 

SSN

-------------

790705*******

 

- 예제2 -

 

둘 이상의 공백 문자를 하나로 대체하여 가독성을 높이자.

 

SELECT REGEXP_REPLACE('Oracle is the Information Company', '( ){2,}', ' ') AS "Result"

  FROM dual;

 

- 결과 -

 

RESULT

-----------------------------------

Oracle is the Information Company

 

- 예제3 -

 

전화번호의 표현 방식을 3자리, 3자리, 4자리로 묶어 식별력을 높이자.

 

SELECT REGEXP_REPLACE('555.123.4567','([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})','(\1) \2 - \3') AS "Result1"

  FROM dual;

 

- 결과 -

 

Result1

----------------

(555) 123 - 4567

 

  • [:digit:] : 숫자 값.

  • [:alpha:] : 문자 값.

  • [:alnum:] : 문자와 숫자를 함께 사용.

 

[REGEXP_INSTR]

 

  • 정규 표현을 만족하는 부분의 위치를 반환한다.

 

- 문법 -

 

REGEXP_INSTR(srcstr, pattern [,position[,occurrence[,returnparam[,match_option]]]])

 

  • position : 검색 시작 위치

  • occurrence : 발생 횟수.

  • returnparam : 반환 옵션.

  • match_option : match를 시도할 때의 옵션.

 

- 예제 -

 

SELECT REGEXP_INSTR('Regular Expression', 'a') AS "REGEXP_INSTR"

 FROM dual;

 

REGEXP_INSTR

---------------

6

[출처] [Oracle] 오라클 정규식(REGEXP) 함수의 활용|작성자 꿈의인생

728x90
반응형

'ㄱWORK, ETC > Oracle' 카테고리의 다른 글

oracle universal installer 설치  (0) 2021.04.14
single_row 가져올때  (0) 2021.04.14
REGEXP_LIKE  (1) 2021.04.14
Outer Join (LEFT, RIGHT, FULL OUTER JOIN)  (0) 2021.02.25
Forms 소스 text 확인  (0) 2021.02.25