SQL 문자열 검색의 핵심! LIKE와 그 밖의 패턴 매칭 문법 정리
데이터베이스를 다루다 보면 특정 문자열이 포함된 데이터를 찾고 싶을 때가 많습니다. 예를 들어, 이름이 "Kim"으로 시작하는 사용자만 조회하고 싶거나, 상품 설명에 "100%"라는 단어가 들어간 경우를 찾고 싶을 때가 있죠. 이럴 때 유용하게 사용하는 SQL 문법이 바로 LIKE입니다. 이번 글에서는 LIKE를 중심으로, 문자열 검색에 유용한 다양한 SQL 문법들을 깔끔하게 정리해보겠습니다.
LIKE의 기본 개념
LIKE는 WHERE 절에서 특정 문자열 패턴을 만족하는 데이터를 조회할 때 사용합니다. 단순한 일치가 아니라, 특정 패턴과 일치하는 데이터를 찾는 데 매우 유용합니다.
SELECT * FROM users
WHERE name LIKE 'Kim%';
위 쿼리는 name 컬럼 값이 'Kim'으로 시작하는 모든 사용자 데이터를 반환합니다.
와일드카드(%, _) 사용법
LIKE를 사용할 때는 와일드카드(wildcard) 문자를 함께 사용해 패턴을 지정합니다.
와일드카드 의미
% 0개 이상의 문자 (문자열 전체)
_ 정확히 한 글자
📌 예시
-- 'Kim'으로 시작하는 이름
SELECT * FROM users WHERE name LIKE 'Kim%';
-- 'son'으로 끝나는 이름
SELECT * FROM users WHERE name LIKE '%son';
-- 이름에 'min'이 포함된 경우
SELECT * FROM users WHERE name LIKE '%min%';
-- 세 글자 이름 중 가운데가 'a'인 경우
SELECT * FROM users WHERE name LIKE 'a';
OT LIKE - 특정 패턴 제외
패턴에 해당하지 않는 데이터를 찾고 싶다면 NOT LIKE를 사용합니다.
-- 이름에 'kim'이 들어가지 않은 사용자
SELECT * FROM users
WHERE name NOT LIKE '%kim%';
ILIKE - 대소문자 무시 (PostgreSQL 전용)
PostgreSQL에서는 기본 LIKE가 대소문자를 구분합니다. 이를 무시하고 싶을 땐 ILIKE를 사용합니다.
-- 'Kim', 'kim', 'KIM' 모두 포함
SELECT * FROM users
WHERE name ILIKE 'kim%';
💡 MySQL에서는 대부분의 경우 기본 collation 설정에 따라 LIKE는 대소문자를 구분하지 않습니다.
SIMILAR TO - 정규식 느낌의 패턴 매칭 (PostgreSQL)
좀 더 복잡한 패턴을 매칭하고 싶다면 SIMILAR TO를 사용할 수 있습니다. 이는 정규표현식과 유사한 문법을 제공합니다.
-- 'Koo' 또는 'Kim'으로 시작하는 경우
SELECT * FROM users
WHERE name SIMILAR TO 'K(oo|im)%';
REGEXP / RLIKE - 정규표현식 검색 (MySQL, Oracle 등)
정규표현식을 직접 사용해 검색할 수 있는 기능도 있습니다. MySQL과 Oracle에서는 REGEXP 또는 RLIKE 키워드를 사용합니다.
-- 이름에 숫자가 포함된 경우
SELECT * FROM users
WHERE name REGEXP '[0-9]';
이 기능을 활용하면 복잡한 문자열 조건도 훨씬 유연하게 처리할 수 있습니다.
ESCAPE 문자 - %나 _를 문자 그대로 찾고 싶을 때
LIKE 패턴에서 %나 _는 특별한 의미를 갖기 때문에, 이를 문자 자체로 검색하려면 ESCAPE 문법을 사용합니다.
-- '100%'라는 문자열을 포함하는 데이터 찾기
SELECT * FROM products
WHERE description LIKE '%100!%%' ESCAPE '!';
!%는 %를 문자로 해석하라는 의미입니다.
📌 마무리: 어떤 문법을 써야 할까?
1. 문법 설명 사용 가능 DB
2. LIKE 문자열 패턴 검색 모든 RDBMS
3. NOT LIKE 특정 패턴 제외 모든 RDBMS
4. ILIKE 대소문자 구분 없이 검색 (PostgreSQL 전용) PostgreSQL
5. SIMILAR TO 정규표현식과 유사한 패턴 검색 PostgreSQL
6. REGEXP / RLIKE 정규표현식 검색 MySQL, Oracle 등
SQL에서 문자열을 다룰 때 LIKE는 매우 자주 사용하는 문법입니다. 하지만 데이터의 조건이 복잡해질수록 REGEXP나 SIMILAR TO 같은 고급 패턴 매칭 문법이 더 유용해질 수 있습니다. 자신이 사용하는 DBMS가 어떤 기능을 지원하는지 확인하고, 상황에 맞는 문법을 골라 사용하는 것이 중요합니다. 지금까지 SQL 문자열 검색에서 꼭 알아야 할 문법들을 정리해보았습니다. 실무에 바로 적용해보면서 익혀보세요!