728x90

REGEXP_REPLACE()는 Oracle SQL에서 정규표현식을 이용해 문자열을 치환할 수 있는 강력한 함수입니다. 이 글에서는 기본 문법부터 실무 활용 예제까지 체계적으로 설명하여, Oracle을 사용하는 개발자들이 실질적으로 업무에 적용할 수 있도록 안내합니다.
1. REGEXP_REPLACE 함수란?
Oracle의 REGEXP_REPLACE 함수는 문자열 내에서 정규표현식과 일치하는 부분을 다른 문자열로 대체하는 함수입니다.
REGEXP_REPLACE(source_string, pattern, replace_string [, position [, occurrence [, match_parameter]]])
source_string: 원본 문자열pattern: 정규표현식 패턴replace_string: 치환할 문자열position: 검색 시작 위치 (기본값 1)occurrence: 몇 번째 항목을 바꿀지 지정 (기본값 0 = 전체)match_parameter: 'i'(대소문자 무시), 'c'(구분), 'n'(개행 포함) 등
2. 기본 예제
예제 1: 숫자 제거
SELECT REGEXP_REPLACE('abc123def456', '\d+', '') AS result FROM dual;
결과: 'abcdef'
예제 2: 공백을 쉼표로 대체
SELECT REGEXP_REPLACE('A B C', '\s+', ',') AS result FROM dual;
결과: 'A', 'B, 'C'
예제 3: 이메일 주소 마스킹
SELECT REGEXP_REPLACE('user@example.com', '(^.).*@', '\1***@') AS masked FROM dual;
결과: 'u***@example.com'
3. 실무 활용 예제
예제 4: 전화번호 포맷 변경
SELECT REGEXP_REPLACE('01012345678', '(\d{3})(\d{4})(\d{4})', '\1-\2-\3') AS phone FROM dual;
결과: '010-1234-5678'
예제 5: 다중 공백 제거
SELECT REGEXP_REPLACE('Oracle SQL Tutorial', '\s+', ' ') AS cleaned FROM dual;
결과: 'Oracle SQL Tutorial'
예제 6: HTML 태그 제거
SELECT REGEXP_REPLACE('<p>Hello</p>', '<.*?>', '') AS text FROM dual;
결과: 'Hello'
4. 고급 활용
예제 7: 정규표현식 그룹 활용
SELECT REGEXP_REPLACE('2025/06/01', '(\d{4})/(\d{2})/(\d{2})', '\1년 \2월 \3일') AS formatted FROM dual;
결과: '2025년 06월 01일'
예제 8: 특정 단어만 치환
SELECT REGEXP_REPLACE('dog cat dog', '\bdog\b', 'puppy') AS result FROM dual;
결과: 'puppy cat puppy'
5. REGEXP_REPLACE vs REPLACE
| 기능 | REGEXP_REPLACE | REPLACE |
|---|---|---|
| 치환 방식 | 정규표현식 | 정확히 일치하는 문자열 |
| 복잡한 패턴 대응 | 가능 | 불가능 |
| 성능 | 비교적 느림 | 빠름 |
6. 성능 고려사항
정규표현식 기반 함수는 성능 비용이 높기 때문에, 반복 처리 시에는 주의가 필요합니다. 대용량 데이터에는 사전 필터링, 인덱스 활용, 또는 정규표현식 최소화 전략을 적용하는 것이 좋습니다.
7. 실무 팁
- 다량의 텍스트 데이터를 정제할 때 유용
- 이메일, 전화번호, HTML 등 구조화된 문자열 처리
- 유효성 검사와 병행해 사용 시 더욱 효과적
8. 결론
Oracle의 REGEXP_REPLACE 함수는 텍스트 정제, 포맷 변경, 민감정보 처리 등 다양한 실무에서 유용하게 사용될 수 있는 도구입니다. 정규표현식을 익히고 이를 REGEXP_REPLACE와 조합하면 복잡한 문자열 처리 작업도 간결하고 효과적으로 해결할 수 있습니다.
9. 참고자료
- Oracle 공식 문서: https://docs.oracle.com
- Oracle SQL Language Reference 21c
- 실전 SQL 정규표현식 가이드 - 김상형 저
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] SOUNDEX()로 고객 오타 명 검색 정확도 높이기 실전 예제 (0) | 2025.06.04 |
|---|---|
| [ORACLE] REGEXP_INSTR() 함수로 문자열 내 패턴 찾는 방법 (0) | 2025.06.04 |
| [ORACLE] REGEXP_SUBSTR() 함수로 텍스트 분리하는 실무 활용 법 (0) | 2025.06.04 |
| [ORACLE] TRANSLATE() 함수로 문자 일괄 치환하는 방법과 활용 예시 (0) | 2025.06.04 |
| [ORACLE] RTRIM() 사용법 : 문자열 오른쪽 공백 제거하는 방법 (0) | 2025.06.04 |