데이터베이스

정규표현식(Regex) in SQL

1. 정규표현식(Regex)이란?

정규표현식은 특정 패턴을 가진 문자열을 검색하거나 추출, 교체할 때 사용하는 표현 방식입니다.
SQL에서는 주로 데이터를 검색하거나 필터링할 때 활용됩니다.

대표적으로 다음 함수가 사용됩니다.

  • Oracle: REGEXP_LIKE, REGEXP_INSTR, REGEXP_SUBSTR, REGEXP_REPLACE
  • MySQL/MariaDB: REGEXP, RLIKE, REGEXP_LIKE
  • PostgreSQL: ~, ~*, !~, !~*, regexp_matches, regexp_replace, regexp_split_to_table

2. SQL 주요 DB별 정규표현식 함수 예시

데이터베이스설명 및 예시
OracleWHERE REGEXP_LIKE(column, '[A-Z]{3}[0-9]{3}')
MySQLWHERE column REGEXP '^[A-Za-z]+[0-9]+$'
PostgreSQLWHERE column ~* 'pattern' (대소문자 구분하지 않음)

3. 정규표현식 주요 메타문자 및 예시 총정리

기호설명예시매칭 결과
^문자열의 시작 지점^AA로 시작하는 문자열만 매칭
$문자열의 끝 지점Z$Z로 끝나는 문자열만 매칭
.모든 단일 문자 (개행 제외)a.baab, acb, adb
*앞의 문자 0회 이상 반복ab*cac, abc, abbc
+앞의 문자 1회 이상 반복ab+cabc, abbc
?앞의 문자가 없거나 한 번만 존재colou?rcolor, colour
\특수문자를 일반 문자로 변환 (escape)\.문자.과 매칭
[ ]문자 집합 중 하나[abc]a, b, 또는 c와 매칭
[^ ]문자 집합이 아닌 문자[^abc]a, b, c 제외 모든 문자
[a-z]문자 범위 지정[0-9]숫자 한자리
{n}정확히 n회 반복[0-9]{3}숫자 3자리
{n,m}최소 n회, 최대 m회 반복[A-Z]{2,4}대문자 2~4개
( )그룹 지정(abc)+abc, abcabc, 등
``OR 조건`dog

4. SQL 함수별 예시

▶️ Oracle 예시

SELECT emp_name
FROM employee
WHERE REGEXP_LIKE(emp_id, '^[A-Z]{2}[0-9]{4}$');
-- 예) emp_id가 AB1234 형태

▶️ MySQL 예시

SELECT name
FROM user
WHERE email REGEXP '^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
-- 예) 이메일 형태 검증

▶️ PostgreSQL 예시

SELECT product_code
FROM product
WHERE product_code ~ '^PRD[0-9]{3}$';
-- 예) PRD로 시작하며 숫자 3자리로 끝나는 코드

5. 자주 사용하는 실무 예제 패턴 모음

이메일 주소 패턴

^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

전화번호 패턴 (000-0000-0000 형태)

^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$

주민등록번호 패턴

^[0-9]{6}-[1-4][0-9]{6}$

알파벳과 숫자가 섞인 아이디

^[a-zA-Z]+[0-9]+$

한글만 포함된 문자열

^[가-힣]+$

6. 정규표현식 사용 시 유의사항

  • DB마다 지원하는 문법이 조금씩 다르므로 사용 전 문서를 확인해야 합니다.
  • 너무 복잡한 정규표현식은 성능을 떨어뜨릴 수 있습니다.
  • 정규표현식은 강력한 도구지만 오남용하면 가독성이 떨어지므로 주석이나 명확한 설명을 함께 제공하세요.

7. DB별 공식 레퍼런스 링크

이 자료를 참고하여 SQL에서 효과적인 데이터 필터링과 패턴 매칭 작업을 수행할 수 있습니다.

zerg96

Recent Posts

노트북(윈도우)에서 아이폰 유선 테더링 하기

윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…

3일 ago

오라클 래치(Latch)

오라클 데이터베이스의 성능을 논할 때, 내부적으로 발생하는 경합(Contention)은 피할 수 없는 주제다. 특히 다수의 프로세스가…

7일 ago

사장님도 3표, 나도 3표? ‘3%룰’ 완전 정복!

안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…

3주 ago

Vector Store(벡터 스토어)

'벡터 스토어' 완벽 가이드: AI 시대, 데이터의 새로운 심장을 만나다 IT 업계는 인공지능(AI)이라는 거대한 패러다임의…

3주 ago

Gemini CLI (재미나이 CLI)

1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…

3주 ago

과적합 (overfitting)

과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…

1개월 ago