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 사용 |
반응형