본문 바로가기
Database

오라클 LIKE 연산자를 활용한 패턴 검색의 모든 것

by 굿센스굿 2024. 12. 3.
반응형


데이터베이스 관리에서 패턴 검색은 대규모 데이터셋에서 특정 조건에 맞는 데이터를 효율적으로 찾는 데 매우 유용한 기능입니다. 오라클 DB에서 제공하는 LIKE 연산자는 이러한 패턴 검색을 간단하면서도 강력하게 수행할 수 있는 도구입니다. 이번 글에서는 LIKE 연산자의 기본 사용법부터 고급 활용법까지, 다양한 예제와 함께 자세히 알아보겠습니다.


1. LIKE 연산자의 기본 개념

LIKE 연산자는 문자열 데이터에서 특정 패턴과 일치하는 데이터를 검색할 때 사용됩니다. 이때 패턴 매칭을 위해 와일드카드(%, _)를 사용합니다.

  • % (퍼센트 기호)
    0개 이상의 문자와 일치합니다.
    예: 'A%'는 'A'로 시작하는 모든 문자열을 검색합니다.
  • _ (언더스코어)
    정확히 1개의 문자와 일치합니다.
    예: 'A_'는 'A'로 시작하고 두 번째 문자가 무엇이든 상관없는 문자열을 검색합니다.

2. 기본 사용법과 예제

2.1 특정 패턴 검색

다음 예제는 EMPLOYEES 테이블에서 특정 패턴을 검색하는 방법을 보여줍니다.

예제 1: 특정 문자로 시작하는 데이터 검색

SELECT FIRST_NAME
FROM EMPLOYEES
WHERE FIRST_NAME LIKE 'J%';
  • 설명:
    FIRST_NAME 열에서 'J'로 시작하는 모든 이름을 검색합니다.
    결과 예시:
    • John, James, Jennifer 등.

예제 2: 특정 문자로 끝나는 데이터 검색

SELECT LAST_NAME
FROM EMPLOYEES
WHERE LAST_NAME LIKE '%son';
  • 설명:
    LAST_NAME 열에서 'son'으로 끝나는 모든 성을 검색합니다.
    결과 예시:
    • Johnson, Wilson, Samson 등.

예제 3: 특정 길이의 데이터 검색

SELECT DEPARTMENT_NAME
FROM DEPARTMENTS
WHERE DEPARTMENT_NAME LIKE '___';
  • 설명:
    이름의 길이가 정확히 3자인 부서명을 검색합니다.
    결과 예시:
    • IT, HR 등 (부서명은 조직마다 다름).

3. 고급 활용법

3.1 와일드카드 결합 사용

와일드카드를 조합하여 더욱 복잡한 패턴을 검색할 수 있습니다.

예제 4: 중간에 특정 문자가 포함된 데이터 검색

SELECT EMAIL
FROM EMPLOYEES
WHERE EMAIL LIKE '%_admin%';

3.2 NOT LIKE 연산자

NOT LIKE를 사용하면 특정 패턴과 일치하지 않는 데이터를 검색할 수 있습니다.

예제 5: 특정 패턴을 제외한 데이터 검색

SELECT PHONE_NUMBER
FROM EMPLOYEES
WHERE PHONE_NUMBER NOT LIKE '555%';
  • 설명:
    전화번호가 '555'로 시작하지 않는 데이터를 검색합니다.
    결과 예시:
    • 444-1234, 666-7890 등.

3.3 ESCAPE를 사용한 특수 문자 검색

특수 문자(%, _)를 데이터로 검색하려면 ESCAPE 키워드를 사용해야 합니다.

예제 6: 특수 문자 포함 데이터 검색

SELECT FILE_NAME
FROM DOCUMENTS
WHERE FILE_NAME LIKE '100\%%' ESCAPE '\';
  • 설명:
    파일명이 '100%'로 시작하는 데이터를 검색합니다.
    결과 예시:
    • 100%_completion.doc, 100%_error.txt 등.

4. LIKE 연산자 사용 시 주의사항

4.1 성능 문제

LIKE 연산자는 패턴 매칭이 복잡할수록 성능이 저하될 수 있습니다. 특히, %가 앞에 사용된 패턴('%abc')은 인덱스를 사용할 수 없어 검색 속도가 느려질 수 있습니다.
해결 방법:

  • 데이터 정규화 및 적절한 인덱스 설계.
  • 특정 조건에서는 INSTR, SUBSTR 등의 문자열 함수 활용.

4.2 대소문자 민감성

오라클은 기본적으로 대소문자를 구분합니다. 대소문자 구분 없이 검색하려면 LOWER() 또는 UPPER() 함수를 활용해야 합니다.

예제 7: 대소문자 구분 없는 검색

SELECT FIRST_NAME
FROM EMPLOYEES
WHERE LOWER(FIRST_NAME) LIKE 'john%';

5. 실무 활용 팁

  1. 간단한 패턴 매칭: 데이터 전처리나 빠른 데이터 확인에 유용합니다.
  2. 복잡한 조건 필터링: 다른 문자열 함수와 결합하여 정교한 조건을 만들 수 있습니다.
  3. 효율적 설계: 성능 문제를 방지하려면 패턴 설계 및 인덱스 활용을 최적화하세요.

마무리

LIKE 연산자는 오라클 DB에서 패턴 검색을 수행할 때 매우 유용한 도구입니다. 기본 개념을 이해하고 다양한 예제를 통해 응용하면 데이터 관리와 분석 작업에서 큰 효율을 얻을 수 있습니다. 위에서 다룬 기본과 고급 활용법을 바탕으로 실무에 바로 적용해 보세요!

반응형