MSSQL 논리 연산자 BETWEEN, EXISTS, IN, LIKE, NOT 등 (WHERE 절)

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'
논리 연산자 예제 1) AND, OR, LIKE


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)   -- 점수
논리 연산자 예제 2) BETWEEN, NOT


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 '과학' 과목은 제외
논리 연산자 예제 3) IN


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)
논리 연산자 예제 4) EXISTS


이 글이 도움이 되셨다면 공유를 부탁드립니다. 다음 글에서 뵙겠습니다!

위로 스크롤