Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL

SQL LIKE 연산자 완벽 가이드: 패턴 매칭으로 원하는 데이터 검색하기

SQL LIKE 연산자는 와일드카드를 사용해 특정 패턴과 유사한 데이터를 찾을 때 활용합니다. 언더스코어(_)는 한 글자를 대체하고, 퍼센트 기호(%)는 0개, 1개 또는 그 이상의 여러 문자를 대체할 수 있습니다.

특정 값과 비슷한 값을 포함하는 컬럼에서 정보를 조회해야 할 때가 있습니다. 예를 들어 employees라는 테이블이 있고, 직함에 'Sales'라는 단어가 포함된 직원 목록을 가져오고 싶다고 가정해 봅시다.

바로 이럴 때 SQL LIKE 연산자가 유용합니다. 이 글에서는 SQL 서버에서 LIKE 연산자를 활용해 더 정교한 쿼리를 작성하는 방법을 자세히 알아보겠습니다.

SQL LIKE란?

SQL LIKE 연산자는 데이터베이스에서 특정 컬럼 값이 주어진 패턴과 일치하는 레코드를 찾아줍니다. 패턴은 퍼센트 기호(%), 언더스코어(_), 그리고 검색하려는 텍스트를 조합해 표현합니다.

예를 들어 LIKE를 사용하면 이름이 S로 끝나는 모든 직원이나, 직함에 Associate가 포함된 직원을 손쉽게 조회할 수 있습니다.

LIKE 연산자는 와일드카드 문자를 활용해 특정 패턴과 일치하는 데이터를 가져옵니다. LIKE 연산자와 함께 자주 사용되는 두 가지 와일드카드는 다음과 같습니다.

  • _ – 언더스코어는 단일 문자 하나를 나타냅니다.
  • % – 퍼센트 기호는 0개, 1개 또는 그 이상의 문자를 나타냅니다.

LIKE 연산자를 사용한 쿼리의 기본 구조는 다음과 같습니다.

SELECT column_name FROM table_name
WHERE column_name LIKE pattern;

위 문법처럼 LIKE 연산자는 주로 SELECT 문 안에서 사용되지만, INSERT, UPDATE, DELETE 문에서도 활용할 수 있습니다.

그럼 실제 예제를 통해 SQL LIKE가 어떻게 작동하는지 살펴보겠습니다.

SQL LIKE 예제

회사 직원 정보를 담은 테이블이 있다고 가정해 보겠습니다. 지점(branch) 이름이 S로 시작하는 지점에서 근무하는 모든 직원의 이름과 지점을 조회하고 싶습니다.

이때 다음과 같은 쿼리를 사용할 수 있습니다.

SELECT name, branch FROM employees
WHERE branch LIKE 'S%';

SQL 서버 데이터베이스는 다음과 같은 결과를 반환합니다.

namebranch
MikeStamford
GeoffSan Francisco
HannahSan Francisco

(3 rows)

S 뒤에 붙은 퍼센트 기호는 이름이 S로 시작하는 모든 지점을 가져오겠다는 의미입니다. 즉, 이 쿼리는 패턴과 일치하는 모든 문자열을 반환합니다.

만약 시니어 어소시에이트를 포함해 직함에 'Associate'가 들어간 모든 직원의 이름과 직함을 조회하고 싶다면 다음 쿼리를 사용하면 됩니다.

SELECT name, title FROM employees
WHERE title LIKE '%Associate%';

이 쿼리는 '%Associate%' 패턴과 일치하는 모든 직원을 찾아 다음과 같은 결과를 반환합니다.

nametitle
LukeSales Associate
MikeSales Associate
AlexisSales Associate
HannahSales Associate
GeoffSenior Sales Associate

SQL NOT LIKE 예제

NOT LIKE 연산자를 사용하면 특정 조건을 충족하지 않는 모든 레코드를 선택할 수 있습니다. NOT LIKE는 SQL의 NOTLIKE를 결합한 형태로, NOT은 조건에 해당하지 않는 레코드를 찾아주는 역할을 합니다.

예를 들어 NOT LIKE를 사용하면 이름이 4글자가 아닌 모든 직원의 이름을 조회할 수 있습니다. 이때 활용할 수 있는 SQL 쿼리는 다음과 같습니다.

SELECT name FROM employees
WHERE name NOT LIKE '____';

이 쿼리는 이름이 4글자인 직원을 제외한 나머지 직원들을 반환합니다.

각 언더스코어 와일드카드는 한 글자를 의미합니다. 따라서 이름이 4글자보다 길거나 짧으면 결과 집합에 포함되지 않습니다.

데이터베이스는 검색 패턴에 맞는 모든 레코드를 반환합니다.

name
Alexis
Hannah
Jonah
Geoff

(4 rows)

마치며

SQL LIKE 연산자를 사용하면 패턴을 기반으로 데이터베이스에서 레코드를 검색할 수 있습니다. 정확히 일치하는 값을 일일이 지정하지 않고도 유사한 레코드를 찾을 수 있으며, LIKE 연산자는 SQL 문의 WHERE 절에 위치합니다.

이번 글에서는 LIKE 문을 활용해 쿼리를 더 구체적으로 만드는 방법을 알아보았습니다. 또한 NOT LIKE 문을 사용해 특정 조건에 맞지 않는 데이터를 조회하는 방법도 함께 살펴보았습니다.

전문 데이터베이스 개발자가 되기 위해 필요한 지식을 체계적으로 익히고 싶다면, SQL 학습자를 위한 종합 가이드인 'SQL 학습 방법' 페이지도 확인해 보시기 바랍니다.