MSSQL 논리 연산자 BETWEEN, EXISTS, IN, LIKE, NOT 등 (WHERE 절)
MS SQL에서는 WHERE 절에서 쿼리 결과 행 제약조건으로 논리 연산자를 기본적으로 지원합니다. 저 같은 경우에도 거의 모든 쿼리문 WHERE 절에서 논리 연산자를 사용하고 있는데 그중에서 BETWEEN, EXISTS, IN, LIKE, NOT 논리 연산자를 가장 많이 사용하고 있습니다.
그럼 간단한 예제를 통해서 논리 연산자에 대해서 알아보죠.
포스트 기준
– Microsoft SQL Server 2019
– SSMS 18.10
논리 연산자 종류
▶ 논리 연산자 종류
| 연산자 | 설명 |
|---|---|
| ALL | 모든 비교 집합이 TRUE인 경우 TRUE입니다. |
| AND | 두 개의 부울 식이 모두 TRUE인 경우 TRUE입니다. |
| ANY | 비교 집합 중 하나가 TRUE인 경우 TRUE입니다. |
| BETWEEN | 피연산자가 범위 안에 있는 경우 TRUE입니다. |
| EXISTS | 하위 쿼리에 행이 포함된 경우 TRUE입니다. |
| IN | 피연산자가 식 목록 중 하나와 같은 경우 TRUE입니다. |
| LIKE | 피연산자가 패턴과 일치하는 경우 TRUE입니다. |
| NOT | 다른 모든 부울 연산자의 값을 반대로 합니다. |
| OR | 하나의 부울 식이 TRUE인 경우 TRUE입니다. |
| SOME | 비교 집합 중 일부가 TRUE인 경우 TRUE입니다. |
사용 예제
1. 테스트 데이터
-- 과목 (국어, 영어, 수학)
SELECT *
FROM BS_SUBJECT
-- 점수 총 10건
SELECT *
FROM BS_DEMO_7
2. 논리 연산자 예제 1) AND, OR, LIKE
-- 1) 국어 점수가 80점 이상인 건
SELECT *
FROM BS_DEMO_7
WHERE SUBJECT = '국어' -- 과목
AND SCORE >= 80 -- 점수
-- 2) 과목 중에서 국어 또는 영어 인 건
SELECT *
FROM BS_DEMO_7
WHERE SUBJECT = '국어' -- 과목
OR SUBJECT = '영어' -- 영어
-- 3) 이름 마지막 글자가 '1'인 건
SELECT *
FROM BS_DEMO_7
WHERE NAME LIKE '%1'
3. 논리 연산자 예제 2) BETWEEN, NOT
-- 1) 점수가 80점 이상 90점 이하 인 건
SELECT *
FROM BS_DEMO_7
WHERE SCORE BETWEEN 80 AND 90 -- 점수
-- 2) 점수가 80점 이상 90점 이하 아닌 건
SELECT *
FROM BS_DEMO_7
WHERE NOT(SCORE BETWEEN 80 AND 90) -- 점수
4. 논리 연산자 예제 3) IN
/* 과목 중에서 국어 또는 영어 인 건
SELECT *
FROM BS_DEMO_7
WHERE SUBJECT = '국어' -- 과목
OR SUBJECT = '영어' -- 영어 */
-- 과목 중에서 국어 또는 영어 인 건 (OR 연산자를 IN 연산자로 변경)
SELECT *
FROM BS_DEMO_7
WHERE SUBJECT IN ('국어', '영어') -- 과목
-- 과목 중에서 BS_SUBJECT(테이블)에 존재하는 과목만
SELECT *
FROM BS_DEMO_7
WHERE SUBJECT IN (SELECT SUBJECT FROM BS_SUBJECT) -- 아무개5 '과학' 과목은 제외
5. 논리 연산자 예제 4) EXISTS
/* 과목 중에서 BS_SUBJECT(테이블)에 존재하는 과목만
SELECT *
FROM BS_DEMO_7
WHERE SUBJECT IN (SELECT SUBJECT FROM BS_SUBJECT) -- 아무개5 '과학' 과목은 제외 */
-- 과목 중에서 BS_SUBJECT(테이블)에 존재하는 과목만 (IN 연산자를 EXISTS 연산자로 변경)
SELECT *
FROM BS_DEMO_7 AS A
WHERE EXISTS
(SELECT SUBJECT
FROM BS_SUBJECT
WHERE SUBJECT = A.SUBJECT)
-- 과목 중에서 BS_SUBJECT(테이블)에 존재하지 않는 과목
SELECT *
FROM BS_DEMO_7 AS A
WHERE NOT EXISTS
(SELECT SUBJECT
FROM BS_SUBJECT
WHERE SUBJECT = A.SUBJECT)
함께 보면 좋은 게시글
- MSSQL NULL 체크(조회) IS 연산자, 대체(치환) ISNULL 함수 (WHERE 절)
- MSSQL ORDER BY 절 데이터 정렬 방법(순서 지정) 오름차순, 내림차순
- MSSQL IF…ELSE 블록 문법 – 흐름 제어(2)
- MSSQL CASE WHEN THEN 조건식 사용법 – 식(1)
- MSSQL LIKE 특수문자(와일드카드) ESCAPE 검색 방법 ([, %, _)
이 글이 도움이 되셨다면 공유 부탁 드립니다.


![[SSMS] 로컬 서버(PC)에 설치한 MSSQL 서버 연결하는 방법](https://bluesharehub.com/wp-content/uploads/2022/02/img_41.png)
