SQL Server 기초: SQL LIKE 연산자 사용하기

T-SQL LIKE 연산자SQL SELECT 문에 추가된 가장 유용한 기능 중 하나입니다. 후자는 결과 집합을 검색하며, 등호 연산자와 WHERE 절을 사용하여 결과를 쉽게 필터링하여 특정 조건을 선택할 수 있습니다. 그러나 부분 값에 기반한 행을 선택하고 싶을 때는 어떻게 해야 할까요? 이때 SQL LIKE 문이 필요하며, 이 튜토리얼에서 그 사용 방법을 보여 드리겠습니다.

SQL LIKE 구문

다음 목록에서 LIKE 연산자의 기본 구문을 볼 수 있습니다:

광고

  • 먼저 일치시키려는 표현식을 제공합니다. 일반적으로 이는 열 이름입니다.
  • 다음으로, 일치하지 않는 모든 조건에 대해 이 표현식이 작동하지 않도록 선택적으로 NOT를 지정할 수 있습니다. NOT LIKE 조건을 사용하는 것은 LIKE 연산자를 사용하는 가장 일반적인 방법은 아닙니다.
  • 다음 텍스트를 한국어로 번역합니다. 번역된 텍스트만 반환할 것이며 설명은 제공하지 않습니다. 번역은 언어 사용 습관에 준수해야 합니다.
  • 이것은 선택적으로 와일드카드 문자를 검색하는 데 사용할 수 있는 이스케이프 문자 뒤에 따라올 수 있습니다.
  • 인수 중 하나라도 문자열 데이터 유형이 아닌 경우 SQL Server는 해당 인수를 문자열 데이터 유형으로 변환합니다.
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

SQL LIKE 및 와일드카드 문자

자세히 들어가기 전에 SQL LIKE 패턴 일치는 일반 문자뿐만 아니라 와일드카드 문자를 포함할 수 있다는 것을 알아야 합니다. 와일드카드 문자를 사용하면 와일드카드 패턴과 일치하는 특정 문자열을 선택할 수 있습니다.

패턴 일치를 위해 일반 문자는 문자열에 지정된 문자와 일치해야 합니다. 그러나 와일드카드 문자는 문자열의 모든 조각과 일치할 수 있습니다. 와일드카드 문자를 사용하면 LIKE 연산자가 일반적인 등호(= 및 !=) 문자열 비교 연산자보다 유연해집니다.

LIKE 연산자는 네 가지 다른 유형의 와일드카드 문자를 허용합니다. 각 와일드카드 문자는 다른 비교 기능을 수행하며, 다음 표에서 자세히 알아볼 수 있습니다.

Wildcard character Description
% (percent sign) Any string of zero or more characters.
_ (underscore) Any single character.
[ ] Any single character within the specified range [a-f] or set [abcdef].
[^] Any single character not within the specified range [^a-f] or set [^abcdef].
The four different types of wildcard characters to use with the LIKE operator.

LIKE 연산자는 match_expression이 지정된 패턴과 일치하는 경우 TRUE를 반환합니다. AdventureWorksLT2019 샘플 데이터베이스와 함께 SQL LIKE 연산자를 사용하는 방법을 보여주기 위해 몇 가지 예제를 사용해 봅시다.

광고

여러 와일드카드 문자 일치하기

% 와일드카드는 0개 이상의 문자를 나타냅니다. 다음 쿼리는 ‘LastName’이 ‘A’로 시작하는 ‘Person.Person’ 테이블의 모든 행을 검색합니다.

USE AdventureWorksLT2019;

SELECT FirstName, LastName FROM SalesLT.Customer

WHERE LastName LIKE 'A%';
Matching multiple wildcard characters (Image credit: Petri/Michael Otey)

단일 문자 와일드카드 매칭

_ 와일드카드은 하나의 문자를 나타냅니다. 다음 예제 쿼리는 ‘Name’이 어떤 유형의 네 글자를 가진 후에 하이픈이 오는 ‘SalesLT.Product’ 테이블의 모든 행을 검색합니다.

USE AdventureWorksLT2019;

SELECT ProductID, Name FROM SalesLT.Product

WHERE Name LIKE '____-%';
Single character wildcard matching (Image credit: Petri/Michael Otey)

문자 집합에 대한 와일드카드 매칭

[] 와일드카드는 지정된 범위나 집합 내의 어떤 단일 문자를 나타냅니다. 다음 SQL 문은 ‘Name’이 ‘B’, ‘C’ 또는 ‘D’로 시작하는 ‘SalesLT.Product’ 테이블의 모든 행을 검색합니다.

USE AdventureWorksLT2019;

SELECT Name FROM SalesLT.Product

WHERE Name LIKE '[BCD]%';
Wildcard matching for a set of characters (Image credit: Petri/Michael Otey)

문자 범위에 대한 와일드카드 매칭

LIKE 절을 사용하여 범위 검색을 지원할 수도 있습니다. 이 쿼리는 ‘ee’로 끝나고 ‘C’와 ‘L’ 사이의 어떤 단일 문자로 시작하는 성을 검색합니다.

광고

USE AdventureworksLT2019;

SELECT LastName, FirstName FROM SalesLT.Customer

WHERE LastName LIKE '[C-L]ee'
Wildcard matching for a range of characters (Image credit: Petri/Michael Otey)

지정된 집합에 포함되지 않는 문자 제외

[^] 와일드카드는 지정된 범위나 집합 내에 포함되지 않는 어떤 단일 문자를 나타냅니다. 다음 쿼리는 ‘Name’이 ‘A’, ‘B’, 또는 ‘C’로 시작하지 않는 ‘SalesLT.Product’ 테이블의 모든 행을 검색합니다.

USE AdventureworksLT2019;

SELECT Name FROM SalesLT.Product

WHERE Name LIKE '[^ABC]%';
Excluding characters that are not part of the specified set (Image credit: Petri/Michael Otey)

여러 와일드카드 매칭 조건 사용

LIKE 절은 단일 쿼리에서 여러 와일드카드와 결합될 수도 있습니다. 다음 쿼리는 여러 SQL 와일드카드를 사용하여 ‘Person.Person’ 테이블에서 ‘FirstName’에 문자 ‘a’가 포함된 행과 ‘LastName’에 임의의 문자 뒤에 ‘l’이 오는 행을 모두 검색합니다.

USE AdventureworksLT2019;

SELECT FirstName, LastName FROM SalesLT.Customer

WHERE FirstName LIKE '%a%' AND LastName LIKE '_l%';
Using multiple wildcard matching conditions (Image credit: Petri/Michael Otey)

와일드카드 문자 검색

와일드카드 매칭은 LIKE 연산자에 많은 기능과 유연성을 추가합니다. 그러나 LIKE를 사용하여 이러한 와일드카드 문자 중 하나와 일치시키는 방법에 대해 궁금할 수 있습니다.

이를 위해 와일드카드 문자를 대괄호로 둘러싸면 와일드카드 문자를 리터럴 문자로 사용할 수 있습니다. 다음 표에서 몇 가지 예제를 볼 수 있습니다.

Pattern Search value
LIKE ‘%2[%]%’ 2%
LIKE ‘%[_]m%’ _m
LIKE ‘%[ [ ]%’ [
Searching for wildcard characters
  • 첫 번째 예제는 퍼센트 와일드카드 문자가 뒤따르는 숫자 2와 일치합니다.
  • 두 번째 예제는 밑줄 문자가 뒤따르는 문자 ‘m’과 일치합니다.
  • 세 번째 예제는 대괄호 문자와 일치시키는 데 사용됩니다.
(Image credit: Petri/Michael Otey)

SQL LIKE 문은 SQL SELECT 문을 향상시킵니다

이제 SQL LIKE 연산자를 사용하여 SQL SELECT 문의 기능과 유연성을 향상시킬 수 있는 방법을 더 잘 이해해야 합니다. 여기서 여러 와일드카드 문자와 함께 LIKE 절을 사용하는 방법도 보여 드렸습니다. 여러 와일드카드 문자를 일치시키는 것, 단일 문자 일치, 문자 집합 일치, 또는 결과에서 문자를 제외하는 것 등 다양한 가능성이 실제로 많이 있습니다.

Source:
https://petri.com/sql-like/