Oracle SQL 정규 표현식 지원

SQL 정규 표현식 개요

오라클 데이터베이스는 SQL 문 내에서 복잡한 패턴 매칭과 데이터 검색을 가능하게 하는 강력한 정규 표현식 기능을 제공합니다. 이러한 기능을 통해 문자열 데이터의 유효성 검사, 데이터 추출, 변환 등 다양한 작업을 효율적으로 수행할 수 있습니다.

오라클 SQL 정규 표현식 연산자

오라클 SQL은 다양한 정규 표현식 연산자를 지원하며, 이를 통해 사용자는 원하는 패턴을 정의하고 검색할 수 있습니다. 주요 연산자는 다음과 같습니다.

  • . (점): 임의의 단일 문자와 매칭됩니다.
  • * (별표): 선행하는 문자가 0번 이상 반복되는 경우와 매칭됩니다.
  • + (더하기): 선행하는 문자가 1번 이상 반복되는 경우와 매칭됩니다.
  • ? (물음표): 선행하는 문자가 0번 또는 1번 나타나는 경우와 매칭됩니다.
  • [] (대괄호): 문자 집합을 정의하며, 집합 내의 어떤 문자든 매칭됩니다.
  • [^] (대괄호 + 캐럿): 문자 집합을 정의하며, 집합 내에 없는 문자와 매칭됩니다.
  • | (파이프): 여러 패턴 중 하나와 매칭됩니다 (OR 조건).
  • () (소괄호): 패턴을 그룹화하고 하위 표현식을 캡처합니다.
  • ^ (캐럿): 문자열의 시작 부분과 매칭됩니다.
  • $ (달러): 문자열의 끝 부분과 매칭됩니다.

정규 표현식 관련 SQL 함수

오라클은 정규 표현식을 활용할 수 있는 다양한 SQL 함수를 제공합니다.

  • REGEXP_LIKE: 주어진 문자열이 특정 정규 표현식과 일치하는지 여부를 확인합니다.
  • REGEXP_INSTR: 문자열 내에서 정규 표현식과 일치하는 부분의 시작 위치를 반환합니다.
  • REGEXP_SUBSTR: 문자열 내에서 정규 표현식과 일치하는 하위 문자열을 추출합니다.
  • REGEXP_REPLACE: 문자열 내에서 정규 표현식과 일치하는 부분을 다른 문자열로 대체합니다.
  • REGEXP_COUNT: 문자열 내에서 정규 표현식과 일치하는 횟수를 반환합니다.

정규 표현식 활용 예시

REGEXP_LIKE를 사용한 이메일 주소 유효성 검사

다음 예제는 emails 테이블에서 유효한 이메일 주소만 선택합니다.

SELECT email
FROM emails
WHERE REGEXP_LIKE(email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$');
  

이 쿼리는 기본 이메일 형식 (예: user@example.com)을 따르는 이메일 주소만 반환합니다.

REGEXP_INSTR을 사용한 특정 패턴 위치 찾기

다음 예제는 descriptions 테이블에서 “Oracle”이라는 단어가 나타나는 위치를 찾습니다.

SELECT REGEXP_INSTR(description, 'Oracle', 1, 1, 0, 'i') AS oracle_location
FROM descriptions;

  

이 쿼리는 대소문자를 구분하지 않고 (‘i’ 플래그) description 컬럼에서 “Oracle” 단어가 처음 나타나는 위치를 반환합니다.

REGEXP_SUBSTR을 사용한 데이터 추출

다음 예제는 phone_numbers 테이블에서 국가 코드를 추출합니다 (예: +1-555-123-4567).

SELECT REGEXP_SUBSTR(phone_number, '\+[0-9]+') AS country_code
FROM phone_numbers;
  

이 쿼리는 전화 번호에서 ‘+’ 기호로 시작하고 그 뒤에 숫자가 1개 이상 오는 패턴을 찾아 추출합니다.

REGEXP_REPLACE를 사용한 문자열 대체

다음 예제는 addresses 테이블에서 모든 숫자를 ‘*’ 문자로 대체합니다.

SELECT REGEXP_REPLACE(address, '[0-9]', '*') AS masked_address
FROM addresses;

  

이 쿼리는 주소에서 모든 숫자를 ‘*’로 마스킹하여 개인 정보 보호를 강화합니다.

REGEXP_COUNT를 사용한 패턴 등장 횟수 계산

다음 예제는 text_data 테이블에서 특정 단어가 몇 번 나타나는지 셉니다.

SELECT REGEXP_COUNT(text, 'example') AS example_count
FROM text_data;
  

이 쿼리는 text 컬럼에서 “example” 단어가 몇 번 나타나는지 계산합니다.

정규 표현식 패턴 매칭 옵션

정규 표현식 함수에 매칭 옵션을 추가하여 매칭 동작을 세밀하게 조정할 수 있습니다.

  • i: 대소문자를 구분하지 않습니다.
  • c: 대소문자를 구분합니다 (기본값).
  • n: 점(.)이 개행 문자와 매칭되도록 합니다.
  • m: 문자열을 여러 줄로 취급합니다.

오라클 SQL 정규 표현식의 장점 및 한계

장점:

  • 복잡한 문자열 패턴 매칭 및 처리를 SQL 문 내에서 직접 수행 가능합니다.
  • 데이터 품질 개선 및 데이터 분석 효율성을 높입니다.

한계:

  • 복잡한 정규 표현식은 성능 저하를 유발할 수 있습니다.
  • 정규 표현식 문법에 대한 이해가 필요합니다.

실무 팁

  • 복잡한 패턴은 미리 테스트하여 정확성을 확보하십시오.
  • 성능에 민감한 쿼리에서는 정규 표현식 사용을 최소화하십시오.
  • 인덱스를 활용하여 정규 표현식 검색 성능을 향상시키십시오.

참고 자료

위로 스크롤