상세 컨텐츠

본문 제목

SQL 정규 표현식(Regex) 정리 및 활용 예제

SQL

by Corn/sec 2025. 1. 29. 16:12

본문

작성: Corn/sec, ChatGPT, 편집: Corn/sec

SQL에서 정규 표현식(Regular Expressions, Regex)은 문자열 패턴을 검색하고 필터링하는 강력한 도구입니다.
MySQL, PostgreSQL 등 여러 DBMS에서 REGEXP 또는 ~ 연산자를 사용하여 정규 표현식을 활용할 수 있습니다.


1. SQL 정규 표현식 기본 문법

① 기초 패턴

. 임의의 한 문자 'c.t' → 'cat', 'cut' (일치)
^ 문자열의 시작 '^A' → 'Apple' (일치), 'Banana' (불일치)
$ 문자열의 끝 'dog$' → 'big dog' (일치), 'dog park' (불일치)
* 0개 이상 반복 'ba*n' → 'bn', 'ban', 'baaan' (일치)
+ 1개 이상 반복 'ba+n' → 'ban', 'baaan' (일치), 'bn' (불일치)
{n,m} 최소 n번, 최대 m번 반복 'a{2,4}' → 'aa', 'aaa', 'aaaa' (일치), 'a', 'aaaaa' (불일치)

② 문자 클래스

[abc] a, b, c 중 하나 'gr[ae]y' → 'gray', 'grey' (일치)
[^abc] a, b, c 제외 '[^0-9]' → 숫자가 아닌 모든 문자
[0-9] 숫자 (0~9) '\d'과 동일
[a-zA-Z] 영문자 '^[A-Z]' → 'Apple' (일치), 'banana' (불일치)
\w 영숫자 및 _ '\w+' → 'hello', 'user_123' (일치)
\s 공백 문자 '\s+' → 'hello world' (공백 포함 검색)

③ 앵커(위치 지정)

^ 문자열의 시작 '^Hello' → 'Hello World' (일치)
$ 문자열의 끝 'end$' → 'The end' (일치)
\b 단어 경계 '\bcat\b' → 'the cat' (일치), 'catch' (불일치)

 

2. SQL에서 정규 표현식 사용법

① MySQL 정규 표현식 활용 (REGEXP)

-- 'J'로 시작하는 이름 찾기
SELECT * FROM users WHERE name REGEXP '^J';
-- 'gmail.com' 이메일 찾기
SELECT * FROM customers WHERE email REGEXP 'gmail\.com$';
-- 3자리 숫자로 시작하는 전화번호 찾기
SELECT * FROM employees WHERE phone REGEXP '^[0-9]{3}-[0-9]{4}-[0-9]{4}$';

② PostgreSQL 정규 표현식 활용 (~, ~*)

-- 'admin'을 포함하는 아이디 찾기
SELECT * FROM users WHERE username ~ 'admin';
-- 4자리 숫자로 끝나는 코드 찾기
SELECT * FROM products WHERE product_code ~ '[0-9]{4}$';
-- 대소문자 구분 없이 'discount' 포함 검색
SELECT * FROM promotions WHERE description ~* 'discount';

 


 

3. SQL 정규 표현식 실전 예제

① 회원 정보에서 특정 패턴 검색하기

-- 전화번호 형식이 '010-1234-5678'인 데이터 찾기
SELECT * FROM members WHERE phone REGEXP '^010-[0-9]{4}-[0-9]{4}$';
-- 이메일이 'naver.com' 또는 'daum.net' 도메인을 포함하는 데이터 찾기
SELECT * FROM users WHERE email REGEXP 'naver\.com|daum\.net$';

② 상품 코드에서 특정 패턴 찾기

-- 상품 코드가 'A1234' 형식인 데이터 찾기 (A로 시작, 4자리 숫자)
SELECT * FROM products WHERE product_code REGEXP '^A[0-9]{4}$';
-- 할인 관련 설명이 포함된 상품 검색
SELECT * FROM products WHERE description REGEXP 'sale|discount|off';

 


4. 정규 표현식을 지원하는 SQL DBMS

DBMS 정규 표현식 지원 여부 주요 연산자
MySQL O REGEXP, RLIKE
PostgreSQL O ~, ~*, !~, !~*
Oracle O REGEXP_LIKE()
SQL Server X 지원 안 함

MySQL과 PostgreSQL은 기본적으로 정규 표현식을 지원하지만, SQL Server에서는 기본적으로 사용할 수 없습니다.


 

5. 결론

SQL 정규 표현식은 데이터 검색과 필터링을 더 정교하게 수행할 수 있도록 도와줍니다.
특히 REGEXP(MySQL), ~(PostgreSQL) 등의 연산자를 활용하면 특정 패턴을 가진 데이터를 쉽게 찾을 수 있습니다.

'SQL' 카테고리의 다른 글

[MySQL] 날짜 및 시간 관련 함수  (0) 2025.03.04

관련글 더보기