본문 바로가기
Database/엑셀로 배우는 SQL 실무 - 입문

[SQL] 엑셀로 배우는 SQL - WHERE (=, !=, LIKE, NOT LIKE)

by 따라쟁이개발자 2023. 1. 2.

앞서 WHERE 절에 숫자 비교 조건 추가하는 방법을 알아봤는데요!

이번엔 WHERE 절에서 텍스트 비교하는 방법을 알아보고자 합니다.

 

엑셀 필터 기능을 텍스트 영역에서 사용하면 아래와 같은 조건들이 나옵니다.

 

텍스트의 경우 같음, 시작문자, 끝문자, 포함 등의 조건을 제공하고 있죠

 

앞서 설명드렸지만, WHERE 절이란?

SELECT문으로 데이터를 조회할 때 조회 조건을 명시하는 부분이라고 생각하시면 됩니다.

WHERE 절을 통해 숫자, 텍스트 비교는 물론 날짜도 비교할 수 있지요

 

WHERE 절 설명은 앞 게시물인 '[SQL] 엑셀로 배우는 SQL - WHERE (=, >, <, !=, BETWEEN)'에  적어 놓았으니

참고해보시면 좋을 것 같아요.

 

 

엑셀로 먼저 살펴보기

이전 장과 동일하게 이번 장에서도 엑셀로 먼저 기능을 사용해보고 

동일한 결과값이 나올 수 있게 SQL을 작성해 보고자 합니다.

 

아래와 같은 엑셀이 있다고 가정하고, 텍스트 기준으로 필터링을 해볼게요

 

1. 음료이름이 '콜라'와 같음 / '콜라'와 같지 않음

 

2. 음료종류가 '탄산'으로 시작 / '탄산'으로 시작하지 않음

 

3. 음료이름이 '주스'로 끝남 / '주스'로 끝나지 않음

 

 

4. 음료이름에 '이'라는 문자가 포함 / '이'라는 문자가 포함되지 않음  

 

SQL로 살펴보기

엑셀 예시와 동일하게 아래와 같은 Table 이 있다고 가정하고 WHERE절에 명시해 SELECT문으로 조회해 볼게요

WHERE 절에서는 보통 '비교할 column 명'을 연산자 앞에 '비교할 값'을 연산자 뒤에 표현합니다.

 

그리고 한 가지 더 텍스트는 비교할 때 값 양 옆에 작은따옴표('')를 붙여줍니다. 

숫자는 따옴표 없이 숫자 값만 써서 비교했었죠

 

같음 (=)

같음을 나타내는 = 는 equal 조건이라고 불리기도 합니다.

SELECT *                
FROM beverage_stock
WHERE name = '콜라';

 

같지 않음 (!=)

equal 조건 앞에 부정조건을 나타내는 ! 를 붙여 표현합니다. 

!= 외에도 ^=, <>로 표현할 수 있습니다.

SELECT *                
FROM beverage_stock
WHERE name != '콜라';  	-- != 대신, ^=, <>도 사용 가능

 

포함 (LIKE)

특정 문자로 시작, 끝이라는 기능은 사실 '포함'이란 기능과 같은 기능입니다.

다만 문자의 위치에 따라 조금씩 달라질 뿐인데요

 

이 포함이란 기능은 SQL에서 LIKE와 와일드카드인 %로 표현됩니다.

%는 빈 값 ('') 일 수도 어떠한 텍스트가 될 수도 있죠

부정의 의미로는 LIKE 앞에 NOT을 붙여주어 사용합니다.

 

LIKE 'A%'는 A로 시작하는 값 (ex. ABC, APPLE, A)

LIKE '% A'는 A로 끝나는 값 (ex. CBA, BANANA, A)

LIKE '% A%'는 A가 포함된 값 (ex. ABC, CBA, ORANGE, APPLE, BANANA, A)

NOT LIKE '% A%'는 A를 포함하지 않는 값 (ex. BCD, KIWI, B)

 

그럼 이 LIKE를 사용해 엑셀과 같은 결과를 내볼게요

 

 

시작, 제외할 시작 문자

특정 문자로 시작하는 단어를 찾으려면 문자값을 앞에 두고 %를 뒤에 두어 찾습니다

SELECT *                
FROM beverage_stock
WHERE type LIKE '탄산%';

제외할 시작문자는 시작의 부정 의미로 LIKE 앞에 NOT을 붙여 줍니다.

SELECT *                
FROM beverage_stock
WHERE type NOT LIKE '탄산%';

 

끝, 제외할 끝 문자

특정 문자로 끝나는 단어를 찾으려면 문자값을 뒤에 두고 %를 앞에 두어 찾습니다

SELECT *                
FROM beverage_stock
WHERE name LIKE '%주스';

 

제외할 끝 문자는 끝나는 단어의 부정 의미로 LIKE 앞에 NOT을 붙여 줍니다.

SELECT *                
FROM beverage_stock
WHERE name NOT LIKE '%주스';

 

포함, 포함하지 않음

포함하는 단어를 찾으려면 문자값을 가운데 두고 앞, 뒤에 %를 두어 찾습니다

SELECT *                
FROM beverage_stock
WHERE name LIKE '%이%';

 

포함하지 않음은 포함의 부정 의미로 LIKE 앞에 NOT을 붙여 줍니다.

SELECT *                
FROM beverage_stock
WHERE name NOT LIKE '%이%';

 

정리

이번 장에서는 WHERE 절을 사용하여 텍스트 비교하는 방법을 알아보았습니다.

이번에도 마찬가지로 실습된 결과를 비교해보면 필터기능을 사용한 엑셀 결과와 SQL 실행 결과가 같다는 것을 보실 수 있습니다.

 

앞서 숫자와 텍스트 비교 시 주로 사용되는 연산자들을 살펴 보았는데요

다음 장에선 숫자와 텍스트 모두 자주 사용하는  IN, NOT IN 조건을 살펴보려 합니다.

 

엑셀 필터에 보면 '항목 선택'이라는 기능이 있지요?

IN, NOT IN은 이 '항목 선택'이란 기능을 구현할 수 있는 SQL 문법입니다.

 

다음 장에선 IN과 NOT IN에 대해 다뤄 볼게요. 🙂

 

 

[ 참고 ]

 MySQL로 배우는 데이터베이스 개론과 실습

 SQL 개발자 이론서 + 기출문제

댓글