🔍 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 |