MSSQL LIKE 와일드카드 사용법, 문자열 검색을 자유롭게 하는 방법
📌 LIKE 연산자와 %·_ 와일드카드로 데이터 검색 범위를 확장하는 SQL 팁
데이터베이스에서 특정 문자열을 포함하거나 특정 패턴에 맞는 데이터를 검색해야 할 때, MSSQL의 LIKE 연산자는 매우 유용한 도구입니다.
특히 와일드카드인 %와 _를 함께 사용하면 검색 범위를 자유롭게 조정할 수 있습니다.
예를 들어, 이름이 ‘A’로 시작하는 모든 레코드를 찾으려면 WHERE name LIKE 'A%'와 같이 작성합니다.
이번 글에서는 LIKE 연산자의 기본 개념부터 와일드카드 종류와 사용법, 실무 예제, 그리고 성능 최적화 팁까지 상세하게 다룹니다.
단순 검색을 넘어 효율적인 데이터 조회를 하고 싶은 분들에게 실질적인 도움이 될 내용입니다.
📋 목차
🔗 LIKE 연산자의 기본 개념
MSSQL에서 LIKE 연산자는 문자열 검색 시 특정 패턴과 일치하는 데이터를 조회하는 데 사용됩니다.
정확한 일치 조건이 아니라, 부분적으로 일치하거나 특정 규칙에 맞는 데이터를 찾고자 할 때 매우 유용합니다.
이 기능을 활용하면 이름, 주소, 이메일 등 문자열 기반 컬럼에서 필요한 데이터만 손쉽게 추출할 수 있습니다.
LIKE 연산자는 주로 와일드카드와 함께 사용됩니다.
와일드카드는 검색 패턴에서 임의의 문자열이나 문자를 대체하는 기호로, 가장 많이 쓰이는 기호는 %와 _입니다.
이를 통해 매우 유연한 검색 조건을 구성할 수 있습니다.
💬 LIKE 연산자는 ‘부분 일치 검색’을 가능하게 해 주는 SQL 문법입니다.
예를 들어, 고객 이름이 ‘Kim’으로 시작하는 모든 데이터를 검색하려면 다음과 같이 작성합니다.
SELECT *
FROM Customers
WHERE Name LIKE 'Kim%';
💡 TIP: LIKE 검색은 대소문자를 구분하지 않는 경우가 많지만, 데이터베이스의 정렬 방식(collation)에 따라 달라질 수 있으니 확인이 필요합니다.
🛠️ 와일드카드 %와 _의 의미
LIKE 연산자에서 사용되는 와일드카드는 문자열 패턴 검색의 핵심 도구입니다.
대표적으로 %와 _ 기호가 있으며, 각각의 의미와 쓰임새가 다릅니다.
이 둘을 적절히 조합하면 매우 유연한 검색 조건을 만들 수 있습니다.
📌 % 와일드카드
% 기호는 0개 이상의 임의의 문자열을 의미합니다.
즉, 검색 위치에 따라 해당 위치 앞뒤로 어떤 문자열이든 올 수 있습니다.
-- 'A'로 시작하는 모든 데이터
WHERE Name LIKE 'A%'
-- 'son'으로 끝나는 모든 데이터
WHERE Name LIKE '%son'
-- 'an'을 포함하는 모든 데이터
WHERE Name LIKE '%an%'
📌 _ 와일드카드
_ 기호는 정확히 1개의 임의의 문자를 대체합니다.
문자의 개수를 제한해서 검색할 때 유용합니다.
-- 'A'로 시작하고 두 번째 문자가 아무 글자나 오는 경우
WHERE Name LIKE 'A_'
-- 'A'로 시작하고 총 3글자인 경우
WHERE Name LIKE 'A__'
⚠️ 주의: LIKE 검색에서 %나 _를 남발하면 인덱스가 제대로 활용되지 않아 성능이 떨어질 수 있습니다.
⚙️ 다양한 LIKE 패턴 예제
LIKE 연산자는 단순히 시작 문자나 끝 문자를 찾는 데 그치지 않고, 다양한 패턴을 조합해 복잡한 검색 조건을 만들 수 있습니다.
아래 예제들은 실무에서 자주 사용되는 패턴입니다.
📌 특정 단어로 시작하는 경우
-- 'Park'으로 시작하는 모든 데이터
WHERE Name LIKE 'Park%'
📌 특정 단어로 끝나는 경우
-- 'son'으로 끝나는 모든 데이터
WHERE Name LIKE '%son'
📌 특정 단어를 포함하는 경우
-- 'an'을 포함하는 모든 데이터
WHERE Name LIKE '%an%'
📌 특정 위치에 특정 문자가 있는 경우
-- 두 번째 문자가 'a'인 데이터
WHERE Name LIKE '_a%'
💎 핵심 포인트:
LIKE 패턴은 %와 _를 적절히 배치해 검색 범위를 유연하게 조절할 수 있습니다.
🔌 와일드카드와 다른 연산자의 결합
LIKE 연산자는 단독으로도 강력하지만, 다른 SQL 연산자나 함수와 결합하면 더 정교한 검색을 수행할 수 있습니다.
예를 들어, AND, OR, NOT 같은 조건문과 함께 사용하면 복합적인 필터링이 가능합니다.
📌 AND, OR와 함께 사용
-- 'Kim'으로 시작하면서 'son'으로 끝나는 이름
WHERE Name LIKE 'Kim%' AND Name LIKE '%son'
-- 'Park' 또는 'Lee'로 시작하는 이름
WHERE Name LIKE 'Park%' OR Name LIKE 'Lee%'
📌 NOT LIKE로 특정 패턴 제외
-- 'Kim'으로 시작하지 않는 이름
WHERE Name NOT LIKE 'Kim%'
📌 함수와 결합
UPPER, LOWER 같은 문자열 변환 함수와 결합하면 대소문자 구분 없이 검색할 수 있습니다.
-- 대소문자 구분 없이 'kim' 검색
WHERE LOWER(Name) LIKE 'kim%'
💡 TIP: 조건이 복잡할 경우 괄호를 사용해 우선순위를 명확히 해 주는 것이 좋습니다.
💡 LIKE 사용 시 성능 최적화 팁
LIKE 연산자는 유연한 문자열 검색을 가능하게 하지만, 잘못 사용하면 쿼리 성능에 큰 영향을 줄 수 있습니다.
특히 대규모 데이터셋에서 와일드카드를 무분별하게 사용하면 인덱스가 무효화되어 전체 테이블 스캔이 발생할 수 있습니다.
📌 성능 최적화를 위한 핵심 전략
- ⚡가능하다면 패턴의 첫 글자에 와일드카드(%)를 사용하지 않기
- 📊검색 대상 컬럼에 적절한 인덱스 생성
- 🛠️불필요한 문자열 변환 함수 사용 최소화
- 🔍필요 시 FULLTEXT 인덱스나 전문 검색 기능 고려
아래는 인덱스를 최대한 활용하는 LIKE 검색 예시입니다.
-- 첫 글자가 'K'인 경우 인덱스 사용 가능
SELECT *
FROM Customers
WHERE Name LIKE 'K%';
⚠️ 주의: WHERE 절에서 LIKE ‘%abc%’처럼 앞뒤에 모두 %를 붙이면 인덱스를 사용할 수 없어 속도가 크게 저하됩니다.
❓ 자주 묻는 질문 (FAQ)
LIKE 검색에서 %와 _의 차이는 무엇인가요?
LIKE는 대소문자를 구분하나요?
와일드카드를 중간에 넣으면 성능이 떨어지나요?
특정 문자 제외 검색이 가능한가요?
LIKE와 IN의 차이는 무엇인가요?
숫자 컬럼에도 LIKE를 사용할 수 있나요?
LIKE 대신 정규식을 사용할 수 있나요?
LIKE 검색 시 공백도 매칭되나요?
📌 MSSQL LIKE 와일드카드로 더 똑똑하게 문자열 검색하기
MSSQL의 LIKE 연산자는 단순한 텍스트 검색을 넘어, 데이터 패턴에 맞는 결과를 빠르게 찾아낼 수 있는 강력한 도구입니다.
특히 와일드카드 %와 _를 활용하면 원하는 문자열의 시작, 끝, 중간, 특정 위치까지 세밀하게 검색할 수 있습니다.
이번 글에서 LIKE의 기본 개념, 와일드카드 종류와 의미, 다양한 패턴 예제, 다른 연산자와의 결합, 그리고 성능 최적화 방법까지 모두 살펴보았습니다.
이제 단순 검색을 넘어, 조건에 맞는 데이터를 더 정밀하게 찾아낼 수 있을 것입니다.
🏷️ 관련 태그 : MSSQL, LIKE, 와일드카드, 문자열검색, SQL기초, 데이터조회, SELECT문, 성능최적화, 데이터베이스, SQL패턴검색