본문 바로가기
오라클[ORACLE]

[오라클] LIKE 문법 완벽 정리 (%, _)

by devlog93 2025. 12. 23.

SQL을 처음 배우면 WHERE 조건절에서 가장 먼저 마주치는 문법이 바로 LIKE이다. LIKE는 문자열을 부분 검색할 때 사용하는 연산자로, 게시판 검색, 이름 검색, 코드 검색 등 실무에서 정말 자주 사용된다.

 

이번 글에서는 이렇게 정리해 보려 한다.

  • LIKE의 기본 개념
  • %와 _ 차이
  • 자주 쓰는 패턴
  • 실무 예제
  • LIKE 사용 시 주의 사항

1. LIKE란?

LIKE는 문자열 컬럼에서 특정 패턴이 포함된 데이터를 조회할 때 사용한다. 일반적인 = 비교는 완전히 일치하는 값만 찾지만, LIKE는 부분 일치 검색이 가능하다.

-- 완전 일치
SELECT *
  FROM EMP
 WHERE NAME = 'KIM';

-- 부분 검색
SELECT *
  FROM EMP
 WHERE NAME LIKE 'KIM%';

 

2. LIKE 기본 문법

여기서 핵심은 패턴이며, 패턴에는 와일드카드 문자를 사용할 수 있다.

SELECT 컬럼명
  FROM 테이블명
 WHERE 컬럼명 LIKE '패턴';

 

3. 와일드카드 문자 %, _

% (퍼센트) - 0개 이상의 모든 문자를 의미, 가장 많이 사용됨

_ (언더 스코어) 정확히 1글자를 의미

 

4. % 사용 예제 

① 이름이 김으로 시작하는 모든 데이터

SELECT *
  FROM EMP
 WHERE NAME LKIE '김%';

 

② 특정 문자로 끝나는 데이터

SELECT *
  FROM EMP
 WHERE NAME LIKE '%수';

 

③ 특정 문자를 포함하는 데이터

SELECT *
  FROM EMP
 WHERE NAME LIKE '%영%';

 

5. _ 사용 예제

① 두 글자 이름 중 첫 글자가

SELECT *
  FROM EMP
 WHERE NAME LIKE '김_';

 

② 세 글자 이름 중 가운데가

SELECT *
  FROM EMP
 WHERE NAME LIKE '_영_';

 

③ 주민번호 뒷자리 마스킹 전 조회

SELECT *
  FROM EMP
 WHERE JUMIN LIKE '990101-1______';

 

6. %와 _조합 사용

이런 식으로 정확 + 유연한 검색 가능

SELECT *
  FROM EMP
 WHERE CODE LIKE 'A_01%';
  • A로 시작
  • 두 번째 글자는 아무 글자 1개
  • 01 포함
  • 뒤는 아무 문자

7. LIKE + WHERE 조건 조합

김 씨이면서 30세 이상인 데이터 조회

SELECT *
  FROM EMP
 WHERE NAME LIKE '김%'
   AND AGE >= 30;

8. 숫자 컬럼에서 LIKE 사용하기

LIKE는 문자열 전용이다. 숫자 컬럼에 사용하려면 형 변환이 필요함.

SELECT *
  FROM EMP
 WHERE TO_CHAR(EMP_NO) LIKE '12%';

9. 대소문자 구분 문제

SELECT *
  FROM EMP
 WHERE NAME LIKE 'kim%'; -- 대문자 KIM은 조회 안됨
 
 -- 해결 방법 대문자
 SELECT *
   FROM EMP
  WHERE UPPER(NAME) LIKE 'KIM%';
 -- 해결 방법 소문자
 SELECT *
   FROM EMP
  WHERE LOWER(NAME) LIKE 'kim%';

 

10. LIKE 사용 시 주의 사항 인덱스 무효화

앞에 % 가 오면 인덱스 사용 불가, 데이터가 많을수록 LIKE 남용 주의

LIKE '%ABC%';

11. 실무에서 자주 쓰는 LIKE 패턴 모음

LIKE 'A%';  -- A로 시작
LIKE '%A';  -- A로 끝
LIKE '%A%'; -- A 포함
LIKE '_A_'; -- 가운데 A
LIKE '___'; -- 3글자

 

오늘은 오라클의 LIKE 문법에 대해 알아보았다. LIKE에서 %와 _를 실무에서 자주 사용하므로 익혀두면  좋을 거 같다. 특정 문자로 시작하거나 특정 문자를 포함하는 검색을 자주 사용했던 것 같다. 하지만 너무 남용하인덱스가 무효화되기 때문에 잘 사용해야 할 거같다. 다음 글에서는 WHERE 조건절, ORDER BY 정렬, DISTINCT, GROUP BY 등을 정리해 보려 한다.

감사합니다. (_ _)