SQL에서 LIKE 연산자는 문자열 패턴 매칭에 사용되는 조건 연산자이다.
사용되는 패턴 문자는 DBMS마다 조금씩 차이가 있으므로, 이를 비교하여
정리한다.
SELECT * FROM 테이블명
WHERE 컬럼명 LIKE '패턴';
% : 길이가 0 이상인 임의의 모든 문자_ : 정확히 한 글자| 기호 | 표준 SQL (MySQL, PostgreSQL, Oracle 등) | MS Access | 의미 |
|---|---|---|---|
% | ✔ | ✔ | 길이가 0 이상인 모든 문자 |
_ | ✔ | ✔ | 정확히 한 글자 |
# | ❌ | ✔ | 숫자 한 자리(0~9) |
[ ] | ❌ (REGEXP로 가능) | ✔ | 대괄호 안의 문자 중 하나 |
! | ❌ | ✔ | 대괄호 안의 문자 제외 |
_ 사용 예시_는 정확히 한 글자를 의미한다.
-- 'A'로 시작하고, 중간에 임의의 한 글자, 'C'로 끝나는 문자열
SELECT * FROM 테이블명
WHERE 컬럼명 LIKE 'A_C';
매칭 예시:
| 값 | 매칭 여부 |
|---|---|
| ABC | ✔ |
| ADC | ✔ |
| AC | ❌ |
| ABBC | ❌ |
# 사용 예시 (MS Access 전용)#는 정확히 한 자리 숫자를 의미한다.
-- 'A' 뒤에 숫자 한 자리, 'C'로 끝나는 문자열
SELECT * FROM 테이블명
WHERE 컬럼명 LIKE 'A#C';
매칭 예시:
| 값 | 매칭 여부 |
|---|---|
| A1C | ✔ |
| A5C | ✔ |
| ABC | ❌ |
| A12C | ❌ |
표준 SQL에서는 #를 지원하지 않으므로 정규식(REGEXP)을 사용한다.
예: MySQL에서 숫자 한 자리 매칭
SELECT * FROM 테이블명
WHERE 컬럼명 REGEXP '^A[0-9]C$';
_는 표준 SQL과 MS Access 모두에서 사용 가능하다.#는 표준 SQL에서는 지원하지 않고, MS Access에서만 숫자 한 자리를REGEXP를 사용하는 것이 DBMS 간 호환성이 좋다.