SQL

[SQL] SQL 정규 표현식 (SQL Regular Expression)

주댕이 2025. 1. 12. 18:16

SQL 정규 표현식

  • 데이터베이스에서 패턴 매칭을 수행할 때 사용된다.
  • 주로 텍스트 데이터의 특정 패턴을 검색하거나 필터링할 때 활용된다.
  • 데이터베이스 시스템에 따라 다양한 방법으로 구현된다.

기본 패턴 매칭

LIKE 연산자를 사용하여 간단한 패턴 매칭을 수행할 수 있다.

  • %: 임의의 문자 시퀀스를 매칭한다.
  • _: 임의의 한 문자를 매칭한다.
  • 예시: SELECT * FROM users WHERE name LIKE 'A%' (이름이 'A'로 시작하는 데이터를 검색한다)

정규 표현식 사용

MySQL, PostgreSQL, Oracle 등 일부 데이터베이스는 정규 표현식 기반의 고급 패턴 매칭을 지원한다.

정규 표현식은 텍스트를 패턴으로 설명하며, 예를 들어 '^[A-Za-z]+$'는 알파벳 문자열을 의미한다.

데이터베이스별 정규 표현식 문법

MySQL

  • REGEXP 또는 RLIKE를 사용한다.
  • 예시: SELECT * FROM users WHERE name REGEXP ' ^[A-Za-z]+$'

PostgreSQL

  • ~(대소문자 구분) 또는 ~*(대소문자 구분 없음)를 사용한다.
  • 예시: SELECT * FROM users WHERE name ~ ' ^[A-Za-z]+$'

Oracle

  • REGEXP_LIKE 함수를 사용한다.
  • 예시: SELECT * FROM users WHERE REGEXP_LIKE(name, ' ^[A-Za-z]+$')

SQLite

  • 기본적으로 REGEXP를 지원하지 않지만, 사용자 정의 함수를 통해 사용 가능하다.

정규 표현식 문법

  • ^: 문자열의 시작
  • $: 문자열의 끝
  • _: 임의의 한 문자
  • *: 앞 분자의 0회 이상 반복
  • +: 앞 문자의 1회 이상 반복
  • []: 괄호 안의 문자 중 하나를 매칭
  • |: OR(또는) 조건
  • \: 특수 문자의 이스케이프 처리

성능 고려사항

정규 표현식은 대규모 데이터셋에서 리소스를 많이 사용할 수 있다.

인덱스를 설정하거나 최소한의 조건으로 쿼리를 최적화하는 것이 중요하다.

 

예시

숫자로만 구성된 데이터 검색하기

SELECT *
FROM users
WHERE phone_number REGEXP '^[0-9]+$';

 

이메일 구조를 가진 데이터 검색하기

SELECT *
FROM users
WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
728x90

'SQL' 카테고리의 다른 글

[SQL] 가독성 높이기  (0) 2025.01.08
[SQL] INSTR()  (0) 2024.12.19
[SQL] SUBSTR()  (0) 2024.12.19
[SQL] OVER()  (4) 2024.12.14
[SQL] 이동 평균 구하기  (0) 2024.12.14