1. 정규표현식이란?
정규표현식 (Regular Expression)은 문자열을 특정 패턴으로 검색하거나 처리하기 위한 표현식이다.
문자열에서 특정 규칙을 가진 데이터를 찾거나, 변환하거나, 검증할 때 사용한다.
대표적인 활용 사례:
- 특정 형식 데이터 검색
- 문자열 치환
- 데이터 형식 검증
- 부분 문자열 추출
예를 들어 다음과 같은 작업을 할 수 있다:
- 전화번호 형식 검사
- 이메일 형식 검사
- 특정 문자로 시작하는 데이터 검색
정규표현식은 Java, Python 같은 프로그래밍 언어뿐 아니라 SQL에서도 문자열 처리 기능으로 지원된다.
2. 정규표현식의 메타 문자
정규표현식은 메타 문자 (meta character)를 이용하여 패턴을 정의한다.
메타 문자는 문자 자체가 아니라 특별한 의미를 가지는 문자이다.
| 메타 문자 | 의미 | 예 |
| \ | 메타 문자를 문자 그대로 사용 | \W, \w |
| ^ | 문자열 시작 | ^The |
| $ | 문자열 끝 | ing$ |
| . | 임의의 한 문자 | a.b |
| ? | 0개 또는 1개 | no? |
| * | 0개 이상 | no* |
| + | 1개 이상 | no+ |
예시
문자열 시작
^The
The로 시작하는 문자열
The book
The SQL
문자열 끝
ing$
ing로 끝나는 문자열
running
reading
coding
임의의 문자
a.b
가능한 문자열
acb
aab
axb
문자 반복
| 패턴 | 의미 | 예 |
| no? | o가 0~1개 | n, no |
| no* | o가 0개 이상 | n, no, noo |
| no+ | o가 1개 이상 | no, noo |
3. SQL에서 사용하는 정규표현식 함수
SQL에서는 정규표현식을 활용하기 위해 여러 함수를 제공한다.
| 함수 | 설명 |
| REGEXP_LIKE | 정규표현식으로 LIKE 검색 |
| REGEXP_REPLACE | 정규표현식으로 문자열 치환 |
| REGEXP_INSTR | 정규표현식 위치 반환 |
| REGEXP_SUBSTR | 정규표현식 부분 문자열 반환 |
| REGEXP_COUNT | 정규표현식 개수 반환 |
4. 전화번호 정규표현식 예제
다음 MEMBER 테이블이 있다고 가정한다.
| Name | PHONE |
| David | 010-8776-4672 |
| Michael | 010-4455-2318 |
| Jane | 010-8876-1609 |
숫자만 추출하기
전화번호에서 -를 제거하는 예제
SELECT
REGEXP_REPLACE(PHONE, '[^0-9]', '')
FROM MEMBER;
결과
01087764672
01044552318
01088761609
설명: [^0-9] → 숫자가 아닌 문자 제거
전화번호 형식 검사
REGEXP_LIKE(PHONE, '010-[0-9]{4}-[0-9]{4}')
의미: 010-0000-0000 형식인지 검사
5. REGEXP_REPLACE 예제
전화번호에서 숫자를 *로 바꾸기
SELECT REGEXP_REPLACE(PHONE, '[0-9]', '*')
FROM MEMBER;
결과
***-****-****
6. 정규표현식 사용 시 주의사항
Oracle, SQL Server 등 DBMS마다 정규표현식 지원이 조금씩 다르다.
Oracle
REGEXP_LIKE
REGEXP_REPLACE
REGEXP_SUBSTR
SQL Server
PATINDEX
LIKE
DBMS마다 함수 차이를 알고 있어야 한다.
7. 정규표현식 실무 활용 예
이메일 검증
REGEXP_LIKE(email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')
숫자만 포함된 데이터
REGEXP_LIKE(value, '^[0-9]+$')
특정 문자 제거
REGEXP_REPLACE(name, '[^A-Za-z]', '')
정규표현식은 문자열 데이터를 처리할 때 매우 강력한 도구이다.
핵심 정리:
- 문자열 패턴을 정의하는 표현식
- 메타 문자를 사용하여 규칙 정의
- SQL에서는 REGEXP 계열 함수로 사용
- 데이터 검증, 문자열 치환, 패턴 검색에 활용
특히 전화번호, 이메일, 로그 데이터 처리 같은 상황에서 많이 사용된다.
'SQLD 시험 대비' 카테고리의 다른 글
| SQLD DML / TCL (0) | 2026.03.05 |
|---|---|
| SQLD 함정 문제 TOP 20 (0) | 2026.03.05 |
| SQLD PIVOT / UNPIVOT (0) | 2026.03.03 |
| SQLD 계층형 질의와 셀프 조인 (0) | 2026.03.02 |
| SQLD Top N 쿼리 (0) | 2026.03.01 |