메뉴 닫기

MSSQL LIKE 와일드카드 사용법, 문자열 검색을 자유롭게 하는 방법

MSSQL LIKE 와일드카드 사용법, 문자열 검색을 자유롭게 하는 방법

📌 LIKE 연산자와 %·_ 와일드카드로 데이터 검색 범위를 확장하는 SQL 팁

데이터베이스에서 특정 문자열을 포함하거나 특정 패턴에 맞는 데이터를 검색해야 할 때, MSSQL의 LIKE 연산자는 매우 유용한 도구입니다.
특히 와일드카드인 %_를 함께 사용하면 검색 범위를 자유롭게 조정할 수 있습니다.
예를 들어, 이름이 ‘A’로 시작하는 모든 레코드를 찾으려면 WHERE name LIKE 'A%'와 같이 작성합니다.

이번 글에서는 LIKE 연산자의 기본 개념부터 와일드카드 종류와 사용법, 실무 예제, 그리고 성능 최적화 팁까지 상세하게 다룹니다.
단순 검색을 넘어 효율적인 데이터 조회를 하고 싶은 분들에게 실질적인 도움이 될 내용입니다.



🔗 LIKE 연산자의 기본 개념

MSSQL에서 LIKE 연산자는 문자열 검색 시 특정 패턴과 일치하는 데이터를 조회하는 데 사용됩니다.
정확한 일치 조건이 아니라, 부분적으로 일치하거나 특정 규칙에 맞는 데이터를 찾고자 할 때 매우 유용합니다.
이 기능을 활용하면 이름, 주소, 이메일 등 문자열 기반 컬럼에서 필요한 데이터만 손쉽게 추출할 수 있습니다.

LIKE 연산자는 주로 와일드카드와 함께 사용됩니다.
와일드카드는 검색 패턴에서 임의의 문자열이나 문자를 대체하는 기호로, 가장 많이 쓰이는 기호는 %_입니다.
이를 통해 매우 유연한 검색 조건을 구성할 수 있습니다.

💬 LIKE 연산자는 ‘부분 일치 검색’을 가능하게 해 주는 SQL 문법입니다.

예를 들어, 고객 이름이 ‘Kim’으로 시작하는 모든 데이터를 검색하려면 다음과 같이 작성합니다.

CODE BLOCK
SELECT *
FROM Customers
WHERE Name LIKE 'Kim%';

💡 TIP: LIKE 검색은 대소문자를 구분하지 않는 경우가 많지만, 데이터베이스의 정렬 방식(collation)에 따라 달라질 수 있으니 확인이 필요합니다.

🛠️ 와일드카드 %와 _의 의미

LIKE 연산자에서 사용되는 와일드카드는 문자열 패턴 검색의 핵심 도구입니다.
대표적으로 %_ 기호가 있으며, 각각의 의미와 쓰임새가 다릅니다.
이 둘을 적절히 조합하면 매우 유연한 검색 조건을 만들 수 있습니다.

📌 % 와일드카드

% 기호는 0개 이상의 임의의 문자열을 의미합니다.
즉, 검색 위치에 따라 해당 위치 앞뒤로 어떤 문자열이든 올 수 있습니다.

CODE BLOCK
-- 'A'로 시작하는 모든 데이터
WHERE Name LIKE 'A%'

-- 'son'으로 끝나는 모든 데이터
WHERE Name LIKE '%son'

-- 'an'을 포함하는 모든 데이터
WHERE Name LIKE '%an%'

📌 _ 와일드카드

_ 기호는 정확히 1개의 임의의 문자를 대체합니다.
문자의 개수를 제한해서 검색할 때 유용합니다.

CODE BLOCK
-- 'A'로 시작하고 두 번째 문자가 아무 글자나 오는 경우
WHERE Name LIKE 'A_'

-- 'A'로 시작하고 총 3글자인 경우
WHERE Name LIKE 'A__'

⚠️ 주의: LIKE 검색에서 %나 _를 남발하면 인덱스가 제대로 활용되지 않아 성능이 떨어질 수 있습니다.



⚙️ 다양한 LIKE 패턴 예제

LIKE 연산자는 단순히 시작 문자나 끝 문자를 찾는 데 그치지 않고, 다양한 패턴을 조합해 복잡한 검색 조건을 만들 수 있습니다.
아래 예제들은 실무에서 자주 사용되는 패턴입니다.

📌 특정 단어로 시작하는 경우

CODE BLOCK
-- 'Park'으로 시작하는 모든 데이터
WHERE Name LIKE 'Park%'

📌 특정 단어로 끝나는 경우

CODE BLOCK
-- 'son'으로 끝나는 모든 데이터
WHERE Name LIKE '%son'

📌 특정 단어를 포함하는 경우

CODE BLOCK
-- 'an'을 포함하는 모든 데이터
WHERE Name LIKE '%an%'

📌 특정 위치에 특정 문자가 있는 경우

CODE BLOCK
-- 두 번째 문자가 'a'인 데이터
WHERE Name LIKE '_a%'

💎 핵심 포인트:
LIKE 패턴은 %와 _를 적절히 배치해 검색 범위를 유연하게 조절할 수 있습니다.

🔌 와일드카드와 다른 연산자의 결합

LIKE 연산자는 단독으로도 강력하지만, 다른 SQL 연산자나 함수와 결합하면 더 정교한 검색을 수행할 수 있습니다.
예를 들어, AND, OR, NOT 같은 조건문과 함께 사용하면 복합적인 필터링이 가능합니다.

📌 AND, OR와 함께 사용

CODE BLOCK
-- 'Kim'으로 시작하면서 'son'으로 끝나는 이름
WHERE Name LIKE 'Kim%' AND Name LIKE '%son'

-- 'Park' 또는 'Lee'로 시작하는 이름
WHERE Name LIKE 'Park%' OR Name LIKE 'Lee%'

📌 NOT LIKE로 특정 패턴 제외

CODE BLOCK
-- 'Kim'으로 시작하지 않는 이름
WHERE Name NOT LIKE 'Kim%'

📌 함수와 결합

UPPER, LOWER 같은 문자열 변환 함수와 결합하면 대소문자 구분 없이 검색할 수 있습니다.

CODE BLOCK
-- 대소문자 구분 없이 'kim' 검색
WHERE LOWER(Name) LIKE 'kim%'

💡 TIP: 조건이 복잡할 경우 괄호를 사용해 우선순위를 명확히 해 주는 것이 좋습니다.



💡 LIKE 사용 시 성능 최적화 팁

LIKE 연산자는 유연한 문자열 검색을 가능하게 하지만, 잘못 사용하면 쿼리 성능에 큰 영향을 줄 수 있습니다.
특히 대규모 데이터셋에서 와일드카드를 무분별하게 사용하면 인덱스가 무효화되어 전체 테이블 스캔이 발생할 수 있습니다.

📌 성능 최적화를 위한 핵심 전략

  • 가능하다면 패턴의 첫 글자에 와일드카드(%)를 사용하지 않기
  • 📊검색 대상 컬럼에 적절한 인덱스 생성
  • 🛠️불필요한 문자열 변환 함수 사용 최소화
  • 🔍필요 시 FULLTEXT 인덱스나 전문 검색 기능 고려

아래는 인덱스를 최대한 활용하는 LIKE 검색 예시입니다.

CODE BLOCK
-- 첫 글자가 'K'인 경우 인덱스 사용 가능
SELECT *
FROM Customers
WHERE Name LIKE 'K%';

⚠️ 주의: WHERE 절에서 LIKE ‘%abc%’처럼 앞뒤에 모두 %를 붙이면 인덱스를 사용할 수 없어 속도가 크게 저하됩니다.

❓ 자주 묻는 질문 (FAQ)

LIKE 검색에서 %와 _의 차이는 무엇인가요?
%는 0개 이상의 모든 문자열을 의미하고, _는 정확히 1개의 문자를 대체합니다.
LIKE는 대소문자를 구분하나요?
기본적으로 MSSQL에서는 대소문자를 구분하지 않지만, 데이터베이스의 정렬 방식(collation)에 따라 달라질 수 있습니다.
와일드카드를 중간에 넣으면 성능이 떨어지나요?
네, 특히 앞에 %를 붙이면 인덱스를 사용할 수 없어 전체 테이블 스캔이 발생합니다.
특정 문자 제외 검색이 가능한가요?
가능합니다. NOT LIKE를 사용해 특정 패턴을 제외할 수 있습니다.
LIKE와 IN의 차이는 무엇인가요?
LIKE는 패턴 기반 검색에 사용되고, IN은 특정 값 목록과의 일치를 확인하는 데 사용됩니다.
숫자 컬럼에도 LIKE를 사용할 수 있나요?
네, 가능하지만 내부적으로 숫자를 문자열로 변환하여 비교하므로 성능이 떨어질 수 있습니다.
LIKE 대신 정규식을 사용할 수 있나요?
MSSQL 자체에서는 정규식을 직접 지원하지 않지만, CLR 함수나 애플리케이션 단에서 정규식 처리를 할 수 있습니다.
LIKE 검색 시 공백도 매칭되나요?
네, 공백도 하나의 문자로 인식되며 패턴 매칭에 포함됩니다.

📌 MSSQL LIKE 와일드카드로 더 똑똑하게 문자열 검색하기

MSSQL의 LIKE 연산자는 단순한 텍스트 검색을 넘어, 데이터 패턴에 맞는 결과를 빠르게 찾아낼 수 있는 강력한 도구입니다.
특히 와일드카드 %_를 활용하면 원하는 문자열의 시작, 끝, 중간, 특정 위치까지 세밀하게 검색할 수 있습니다.

이번 글에서 LIKE의 기본 개념, 와일드카드 종류와 의미, 다양한 패턴 예제, 다른 연산자와의 결합, 그리고 성능 최적화 방법까지 모두 살펴보았습니다.
이제 단순 검색을 넘어, 조건에 맞는 데이터를 더 정밀하게 찾아낼 수 있을 것입니다.


🏷️ 관련 태그 : MSSQL, LIKE, 와일드카드, 문자열검색, SQL기초, 데이터조회, SELECT문, 성능최적화, 데이터베이스, SQL패턴검색