Oracle

Oracle.정규식(Regular Expressions)

calla1013 2025. 6. 3. 16:27
Oracle SQL 정규 표현식 완벽 가이드

🔍 Oracle SQL의 강력한 문자열 처리 도구
정규 표현식(Regular Expressions) 완벽 가이드

LIKE로 해결되지 않는 복잡한 문자열 조건? Oracle SQL의 REGEXP 함수로 모두 해결할 수 있습니다! 본 가이드는 정규 표현식의 기본 개념부터 실전 예제까지 완전 정복할 수 있게 도와줍니다.

1. 정규 표현식이란?

정규 표현식(Regex)은 특정 패턴을 가진 문자열을 찾아내거나 변형하기 위한 도구입니다. Oracle에서는 10g부터 REGEXP_* 함수들을 제공하고 있습니다.

💡 활용 예시: 이메일 유효성 검증, 전화번호 포맷 검사, 숫자 추출, 문자열 치환, 데이터 정제 등

2. 정규 표현식 문법 요약

2.1. 기본 기호
  • .: 임의의 한 문자
  • [abc]: a, b, c 중 하나
  • [^abc]: a, b, c 제외한 문자
  • ^: 문자열 시작
  • $: 문자열 끝
  • \: 특수문자 이스케이프
2.2. 반복자 (Quantifiers)
  • *: 0회 이상
  • +: 1회 이상
  • ?: 0 또는 1회
  • {m}: 정확히 m회
  • {m,}: 최소 m회
  • {m,n}: m~n회

3. REGEXP 함수 소개

함수 설명
REGEXP_LIKE 정규식과 일치하는지 조건 검사
REGEXP_SUBSTR 일치하는 문자열 추출
REGEXP_REPLACE 일치하는 부분을 치환
REGEXP_INSTR 일치하는 문자열 위치 반환

4. 실전 예제 모음

4.1. 전화번호 포맷 확인 (02-1234-5678)
SELECT mem_hometel
FROM member
WHERE REGEXP_LIKE(mem_hometel, '^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$');
4.2. 이메일 형식 확인 (소문자 3글자 + @)
SELECT mem_mail
FROM member
WHERE REGEXP_LIKE(mem_mail, '^[a-z]{3}@');
4.3. 문자열 내 숫자만 추출
SELECT REGEXP_SUBSTR('상품코드: A101-B200', '[0-9]+', 1, 1) AS first_number
FROM dual;
4.4. 하이픈(-) 제거
SELECT REGEXP_REPLACE('010-1234-5678', '-', '') AS cleaned_number
FROM dual;
4.5. 대소문자 구분 없이 검색 (i 옵션)
SELECT name
FROM users
WHERE REGEXP_LIKE(name, 'kim', 'i');

5. Modifier 옵션

  • i: 대소문자 구분 없음
  • c: 대소문자 구분 (기본)
  • n: 개행 문자 포함
  • m: 멀티라인 모드
  • x: 공백 무시

📌 마무리

정규 표현식은 처음에는 어렵지만, 한번 익히면 데이터 유효성 검증, 필터링, 전처리에 큰 도움이 됩니다. Oracle SQL의 REGEXP 함수와 함께라면 문자열 처리도 두렵지 않아요!

'Oracle' 카테고리의 다른 글

Oracle.예외처리와 트랜잭션  (0) 2025.06.03
Oracle.PL/SQL기본  (0) 2025.06.03
Oracle.SQL고급  (0) 2025.06.03
Oracle.조인과 서브쿼리  (0) 2025.05.31
Oracle.그룹 쿼리와 집계함수  (1) 2025.05.31