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 등을 정리해 보려 한다.
감사합니다. (_ _)
'오라클[ORACLE]' 카테고리의 다른 글
| [오라클] CASE WHEN 문법 완벽 정리 ( 다중 CASE WHEN 정리 ) (0) | 2025.12.24 |
|---|---|
| [오라클] NULL 처리 정리 (NVL, NVL2, COALESCE, NULLIF) (0) | 2025.12.22 |
| [오라클] SELECT / INSERT / UPDATE / DELETE SQL 기본 문법 정리 (DML) (0) | 2025.12.16 |
| [오라클] TO_DATE 날짜 연산 정리 (0) | 2025.12.15 |
| [오라클] TO_CHAR와 TO_DATE 함수 정리 (0) | 2025.03.09 |