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별 정규표현식 함수 예시
데이터베이스 | 설명 및 예시 |
---|---|
Oracle | WHERE REGEXP_LIKE(column, '[A-Z]{3}[0-9]{3}') |
MySQL | WHERE column REGEXP '^[A-Za-z]+[0-9]+$' |
PostgreSQL | WHERE column ~* 'pattern' (대소문자 구분하지 않음) |
3. 정규표현식 주요 메타문자 및 예시 총정리
기호 | 설명 | 예시 | 매칭 결과 |
---|---|---|---|
^ | 문자열의 시작 지점 | ^A | A로 시작하는 문자열만 매칭 |
$ | 문자열의 끝 지점 | Z$ | Z로 끝나는 문자열만 매칭 |
. | 모든 단일 문자 (개행 제외) | a.b | aab , acb , adb 등 |
* | 앞의 문자 0회 이상 반복 | ab*c | ac , abc , abbc 등 |
+ | 앞의 문자 1회 이상 반복 | ab+c | abc , abbc 등 |
? | 앞의 문자가 없거나 한 번만 존재 | colou?r | color , 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별 공식 레퍼런스 링크
- Oracle 공식문서: Oracle SQL Regular Expressions
- MySQL 공식문서: MySQL REGEXP
- PostgreSQL 공식문서: PostgreSQL Regular Expressions
이 자료를 참고하여 SQL에서 효과적인 데이터 필터링과 패턴 매칭 작업을 수행할 수 있습니다.