본문 바로가기
카테고리 없음

SQL 정규식 표현: 메타 문자, 리터럴 문자, 연산자 및 함수 활용

by moment-love 2025. 2. 5.

 

SQL 정규식 표현: 메타 문자, 리터럴 문자, 연산자 및 함수 활용

SQL에서 정규식(Regular Expressions, RegEx)은 문자열을 검색, 비교, 변환할 때 유용하게 사용됩니다.

특히 오라클(Oracle)과 SQL Server에서는 정규식을 활용하여 복잡한 문자열 패턴을 쉽게 다룰 수 있습니다.

이번 글에서는 정규식의 개념과 주요 연산자, 각 DBMS에서의 사용법을 샘플 예제와 함께 설명하겠습니다.

 


1. 정규식 표현 개요

정규식은 특정 패턴을 가진 문자열을 찾거나 변경하는 데 사용되는 문자열 표현 방식입니다.
예를 들어, 이메일 형식인지 검증하거나, 숫자만 포함된 문자열인지 확인하는 데 사용될 수 있습니다.

 

정규식의 주요 구성 요소

  • 메타 문자(Meta Characters) → 특정 기능을 수행하는 기호(^, $,. 등)
  • 리터럴 문자(Literal Characters) → 문자 그대로 매칭되는 일반 문자 (A-Z, 0-9, abc 등)
  • 정규식 연산자 → 패턴을 확장하거나 반복(|, *, +, {} 등)
  • 정규식 조건과 함수 → 오라클과 SQL Server에서 정규식을 처리하는 함수

2. 메타 문자 (Meta Characters)와 사용 예제

메타 문자는 특별한 의미를 가지는 문자로, 특정 조건에 맞는 문자열을 찾는 데 사용됩니다.

 

메타 문자 설명 예제 (찾을 패턴) 매칭되는 문자열
. 임의의 문자 한 개 c.t cat, cut, cet
^ 문자열의 시작 ^A Apple, Air (A로 시작)
$ 문자열의 끝 end$ weekend, friend (end로 끝남)
* 0개 이상의 반복 go* g, go, goo, gooo
+ 1개 이상의 반복 go+ go, goo, gooo
? 0개 또는 1개 존재 colou?r color, colour
{n,m} 최소 n개, 최대 m개 반복 a{2,4} aa, aaa, aaaa
[abc] 괄호 안의 문자 중 하나 [cm]at cat, mat
[^abc] 괄호 안의 문자 제외 [^cm]at bat, rat
\d 숫자 (0-9) \d+ 123, 45678
\w 알파벳 + 숫자 \w+ hello123, world_1

 

예제: ^[A-Z]\w+

  • 설명: 대문자로 시작하는 단어를 찾음
  • 매칭되는 문자열: "Hello", "Oracle", "SQL"
  • 매칭되지 않는 문자열: "hello", "123abc"

3. 리터럴 문자 (Literal Characters) - 오라클 & SQL Server

리터럴 문자그 자체로 해석되는 문자로, 단순 문자열 검색에 사용됩니다.
정규식에서 메타 문자(^, $,. 등)를 일반 문자로 사용하려면 백슬래시(\)를 붙여야 합니다.

 

예제: \. → 마침표(.)를 포함한 문자열 찾기

  • 패턴: example\.com
  • 매칭되는 문자열: "www.example.com", "my.example.com"
  • 매칭되지 않는 문자열: "www_example_com"

🔹 오라클(Oracle)에서 리터럴 문자 사용하기

 

SELECT * FROM Users WHERE REGEXP_LIKE(Email, 'example\.com');

✅ example.com을 포함한 이메일 주소만 조회

 


 

 

🔹 SQL Server에서 리터럴 문자 사용하기

 

SELECT * FROM Users WHERE Email LIKE '%example.com';

✅ LIKE 연산자를 활용하여 특정 문자열 포함 여부 확인

 


4. ^ (Caret) 연산자 - 문자열 시작 확인

^ 연산자는 문자열이 특정 문자로 시작하는지 확인할 때 사용됩니다.

 

예제: ^A → 'A'로 시작하는 문자열 찾기

  • 매칭되는 문자열: "Apple", "America"
  • 매칭되지 않는 문자열: "Banana", "carrot"

 

🔹 오라클에서 ^ 사용하기

SELECT * FROM Employees WHERE REGEXP_LIKE(EmployeeName, '^A');

이름이 'A'로 시작하는 직원 조회

 


 

 

🔹 SQL Server에서 ^ 대신 LIKE 사용하기

SELECT * FROM Employees WHERE EmployeeName LIKE 'A%';

SQL Server에서는 LIKE 'A%'로 동일한 기능 수행

 


5. PERL 정규 표현식 연산자

오라클은 PERL 정규식 스타일을 지원하며, REGEXP_LIKE, REGEXP_SUBSTR 등의 함수를 제공합니다.

 

연산자 설명
REGEXP_LIKE 특정 패턴이 포함된 행 조회
REGEXP_SUBSTR 특정 패턴과 일치하는 문자열 추출
REGEXP_REPLACE 특정 패턴을 다른 문자열로 변환

 

예제: REGEXP_REPLACE를 사용하여 전화번호 포맷 변경

 

SELECT REGEXP_REPLACE('123-456-7890', '(\d{3})-(\d{3})-(\d{4})', '(\1) \2-\3') FROM DUAL;

✅ 123-456-7890 → (123) 456-7890로 변환

 


6. 정규 표현식 조건과 함수

SQL에서 정규식을 활용하는 함수들은 특정 패턴과 일치하는 데이터를 찾거나 변환하는 데 유용합니다.

 

함수 설명 사용 가능 DB
REGEXP_LIKE 특정 패턴이 포함된 행 조회 Oracle
REGEXP_SUBSTR 특정 패턴과 일치하는 문자열 추출 Oracle
REGEXP_REPLACE 특정 패턴을 다른 문자열로 변경 Oracle
PATINDEX 특정 패턴의 위치 반환 SQL Server
LIKE 부분 문자열 검색 SQL Server

 

🔹 오라클에서 특정 패턴 찾기

 

SELECT * FROM Employees WHERE REGEXP_LIKE(EmployeeName, '^[Jj]');

J 또는 j로 시작하는 직원 조회

 

 


 

🔹 SQL Server에서 패턴 찾기

 

SELECT * FROM Employees WHERE EmployeeName LIKE 'J%';

SQL Server에서는 LIKE 연산자로 패턴 검색 가능

 


7. 결론

메타 문자 → ^, $,. 등의 기호를 사용하여 패턴 매칭 수행
리터럴 문자 → 특정 문자열을 검색할 때 사용하며, 특수 문자는 \로 이스케이프
PERL 정규식 연산자 → 오라클에서 REGEXP_LIKE, REGEXP_REPLACE 사용 가능
SQL Server는 LIKE, PATINDEX로 정규식 기능 대체

 

SQLD 자격증 대비를 위해 각 DBMS의 정규식 함수와 차이를 이해하고, 실습을 통해 익숙해지는 것이 중요합니다!

 

 

반응형