DB/PostgreSQL

[ PostgreSQL ] WHERE 절에서 LIKE 사용 방법과 예제

Soso Dev 2025. 4. 29. 17:29
반응형

 

 

 

🌱 PostgreSQL WHERE 절에서 LIKE 사용 방법과 예제

 

1. LIKE란 무엇인가?

LIKE는 PostgreSQL을 비롯한 SQL에서 문자열 패턴 매칭을 위해 사용하는 연산자입니다.
특정 컬럼 값이 지정한 패턴과 일치하는지를 확인할 때 주로 사용합니다.

  • LIKE는 대소문자를 구분합니다.
  • 패턴 문자:
    • % : 0개 이상의 임의 문자
    • _ : 정확히 1개의 임의 문자

 

2. 기본 사용법

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

패턴 설명

  • 'A%' : 'A'로 시작하는 모든 값
  • '%A' : 'A'로 끝나는 모든 값
  • '%A%' : 'A'를 포함하는 모든 값
  • 'A_B' : 첫 글자가 'A', 세 번째 글자가 'B'인 3글자 문자열

 

3. 실전 예제

3.1 샘플 테이블 생성

CREATE TABLE employees (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100)
);

INSERT INTO employees (name) VALUES
('Alice'),
('Bob'),
('Charlie'),
('Albert'),
('Roberta'),
('Ann');

3.2 'A'로 시작하는 이름 찾기

SELECT name
FROM employees
WHERE name LIKE 'A%';

결과:

Alice
Albert
Ann

3.3 이름에 'b'가 포함된 사람 찾기

SELECT name
FROM employees
WHERE name LIKE '%b%';

결과:

Bob
Roberta
Albert

❗ 참고: PostgreSQL에서는 기본적으로 LIKE가 대소문자를 구분하기 때문에, 'b'는 소문자 'b'만 매칭됩니다.

3.4 대소문자 구분 없이 찾기 (ILIKE)

SELECT name
FROM employees
WHERE name ILIKE '%b%';

이 경우 대문자 'B'나 소문자 'b' 모두 찾습니다.

 

4. 특수 문자 검색

만약 %나 _ 같은 패턴 문자를 문자 자체로 검색하고 싶다면 ESCAPE 키워드를 사용합니다.

SELECT '100% 완료' LIKE '100!%%' ESCAPE '!';
  • !를 escape 문자로 지정
  • '%'를 문자로 인식합니다.

 

5. 주의사항

  • LIKE 검색은 전체 스캔(Seq Scan)을 유발할 수 있어 데이터가 많을 경우 성능에 영향을 줄 수 있습니다.
  • 성능을 개선하려면 GIN 인덱스trigram 인덱스 등을 고려할 수 있습니다.
  • ILIKE는 대소문자를 구분하지 않지만, 이 역시 성능에 주의해야 합니다.

 

6. 요약

조건 사용 방법
'A'로 시작하는 문자열 찾기 LIKE 'A%'
'A'로 끝나는 문자열 찾기 LIKE '%A'
'A'를 포함하는 문자열 찾기 LIKE '%A%'
대소문자 무시하고 검색 ILIKE '패턴'
특수문자(%, _) 자체 검색 ESCAPE 사용
반응형