SQL 정규 표현식(Regex) 이해
James Reed
Infrastructure Engineer · Leapcell

Key Takeaways
- SQL regex는 쿼리 내에서 직접 고급 패턴 매칭 및 데이터 유효성 검사를 가능하게 합니다.
- 다양한 SQL 방언은 자체 구문 및 함수로 regex를 지원합니다.
- SQL에서 정규 표현식을 사용하면 데이터 처리를 간소화하고 데이터 품질을 향상시킬 수 있습니다.
SQL의 정규 표현식(regex)은 강력한 패턴 매칭 기능을 제공하여 사용자가 SQL 쿼리 내에서 직접 복잡한 문자열 검색, 유효성 검사 및 조작을 수행할 수 있도록 합니다. 이 기사에서는 SQL 정규 표현식의 기본 사항, 구문, 기능 및 다양한 데이터베이스 시스템에서의 실제 적용에 대해 자세히 설명합니다.
SQL에서 정규 표현식이란 무엇입니까?
정규 표현식은 검색 패턴을 정의하는 문자 시퀀스입니다. SQL에서 정규 표현식을 사용하면 LIKE
와 같은 기본 연산자의 기능을 능가하는 고급 문자열 매칭이 가능합니다. 다양한 SQL 방언은 다음과 같은 정규 표현식 기능을 지원합니다.
- MySQL:
REGEXP
또는RLIKE
연산자. - PostgreSQL:
~
,~*
,!~
및!~*
와 같은 POSIX 연산자. - Oracle:
REGEXP_LIKE
,REGEXP_REPLACE
,REGEXP_INSTR
및REGEXP_SUBSTR
과 같은 함수. - SQL Server: 2025 버전부터
REGEXP_LIKE
,REGEXP_REPLACE
및REGEXP_SUBSTR
과 같은 함수가 지원됩니다.
SQL의 일반적인 정규 표현식 메타 문자
정규 표현식은 메타 문자를 활용하여 복잡한 검색 패턴을 정의합니다.
.
: 모든 단일 문자와 일치합니다.*
: 선행 요소의 0회 이상 발생과 일치합니다.+
: 선행 요소의 1회 이상 발생과 일치합니다.?
: 선행 요소의 0회 또는 1회 발생과 일치합니다.^
: 문자열의 시작 부분에 일치를 고정합니다.$
: 문자열의 끝 부분에 일치를 고정합니다.[abc]
: 괄호 안의 문자 중 하나와 일치합니다.[^abc]
: 괄호 안에 나열되지 않은 문자와 일치합니다.{n}
: 선행 요소의 정확히 n번 발생과 일치합니다.{m,n}
: 선행 요소의 m번과 n번 사이의 발생과 일치합니다.|
: 패턴 간의 논리적 OR 역할을 합니다.
SQL의 주요 정규 표현식 함수
1. REGEXP_LIKE
문자열이 지정된 정규 표현식 패턴과 일치하는지 확인합니다.
예시(Oracle):
SELECT * FROM employees WHERE REGEXP_LIKE(email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$');
이 쿼리는 유효한 이메일 형식을 가진 모든 직원 레코드를 검색합니다.
2. REGEXP_REPLACE
정규 표현식 패턴과 일치하는 부분 문자열을 지정된 대체 문자열로 바꿉니다.
예시(MySQL):
SELECT REGEXP_REPLACE(phone_number, '[^0-9]', '') AS cleaned_number FROM contacts;
이렇게 하면 전화 번호에서 모든 비숫자 문자가 제거됩니다.
3. REGEXP_SUBSTR
정규 표현식 패턴과 일치하는 부분 문자열을 추출합니다.
예시(Oracle):
SELECT REGEXP_SUBSTR(email, '@[^.]+') AS domain FROM users;
이렇게 하면 이메일 주소에서 도메인 부분이 추출됩니다.
4. REGEXP_INSTR
정규 표현식 패턴과 일치하는 부분 문자열의 위치를 반환합니다.
예시(Oracle):
SELECT REGEXP_INSTR('Contact: 123-456-7890', '[0-9]{3}-[0-9]{3}-[0-9]{4}') AS position FROM dual;
이렇게 하면 문자열에서 전화 번호 패턴의 시작 위치를 찾습니다.
실제 예시
'Sa'로 시작하는 문자열 일치
MySQL:
SELECT name FROM students WHERE name REGEXP '^Sa';
'Sarah' 또는 'Samuel'과 같이 'Sa'로 시작하는 이름을 검색합니다.
텍스트에서 URL 추출
PostgreSQL:
SELECT REGEXP_SUBSTR(message, 'https?://[^ ]+') AS url FROM messages;
메시지 텍스트에서 URL을 추출합니다.
이메일 주소 유효성 검사
Oracle:
SELECT email FROM users WHERE REGEXP_LIKE(email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$');
표준 이메일 형식과 일치하는 이메일을 선택합니다.
SQL 방언 간 고려 사항
- MySQL:
REGEXP
는 기본적으로 대소문자를 구분하지 않습니다. 대소문자를 구분하는 일치에는BINARY
를 사용하십시오. - PostgreSQL:
~
(대소문자 구분) 및~*
(대소문자 구분 안 함)와 같은 연산자를 사용하여 POSIX 정규 표현식을 지원합니다. - Oracle:
REGEXP_LIKE
및REGEXP_REPLACE
와 같은 함수를 사용하여 광범위한 정규 표현식 지원을 제공합니다. - SQL Server: 2025 버전에서
REGEXP_LIKE
및REGEXP_REPLACE
를 포함한 정규 표현식 함수를 도입했습니다.
결론
정규 표현식을 SQL 쿼리에 통합하면 데이터 검색 및 조작 기능이 향상되어 데이터베이스 내에서 직접 정교한 패턴 매칭 및 유효성 검사가 가능합니다. 다양한 SQL 방언에서 정규 표현식 함수를 이해하고 활용하면 데이터 처리 작업을 크게 간소화할 수 있습니다.
FAQs
정규 표현식은 주로 SQL 쿼리에서 복잡한 문자열 매칭 및 유효성 검사에 사용됩니다.
대부분의 주요 SQL 데이터베이스는 정규 표현식을 지원하지만 구문 및 함수는 다를 수 있습니다.
데이터베이스에서 직접 정확한 데이터 추출, 유효성 검사 및 조작을 허용합니다.
Leapcell은 백엔드 프로젝트 호스팅을 위한 최고의 선택입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무료로 무제한 프로젝트 배포
- 사용량에 대해서만 비용을 지불하십시오. 요청도, 비용도 없습니다.
탁월한 비용 효율성
- 유휴 요금 없이 사용한 만큼 지불하십시오.
- 예: $25는 60ms 평균 응답 시간으로 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전히 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
간편한 확장성 및 고성능
- 높은 동시성을 쉽게 처리할 수 있도록 자동 확장합니다.
- 운영 오버헤드가 없으므로 구축에만 집중하십시오.
설명서에서 자세히 알아보십시오!
X에서 팔로우하세요: @LeapcellHQ