2 분 소요

비교 연산자(Comparison Operators)는 SQL에서 조건을 지정하거나 데이터 필터링할 때 가장 기본적이면서도 중요한 도구입니다. 이 글에서는 =, !=, BETWEEN, IN, IS NULL 등 다양한 비교 연산자와 그 차이점을 예제 중심으로 설명드립니다.


1. SQL 비교 연산자 종류 및 기능

연산자 설명 예제 결과
= 같음 3 = 3 1
!=, <> 같지 않음 3 != 4 1
<, <=, >, >= 크기 비교 5 >= 3 1
<=> NULL 포함 비교 NULL <=> NULL 1
IS, IS NOT 값이 TRUE, FALSE, NULL인지 확인 1 IS NOT NULL 1
BETWEEN ... AND ... 범위 내 값 확인 3 BETWEEN 1 AND 5 1
IN(...) 목록에 포함되는 값인지 확인 5 IN (1, 3, 5) 1
NOT IN(...) 목록에 포함되지 않는 값인지 확인 6 NOT IN (1, 3, 5) 1

2. 주요 비교 연산자 사용 예제

2.1. 같음과 다름: =, !=, <>

SELECT 3 = 3 AS Same;      -- 결과: 1
SELECT 3 != 4 AS NotSame;  -- 결과: 1
SELECT 5 <> 5 AS False;    -- 결과: 0

2.2. 크기 비교: <, <=, >, >=

SELECT 3 < 4 AS Result;      -- 1
SELECT 5 >= 5 AS Result;     -- 1

3. NULL과의 안전한 비교: <=>

  • 일반 비교(=)는 NULL 값 비교 시 항상 거짓(0)을 반환합니다.
  • <=>NULL 비교도 가능하며, 두 값이 모두 NULL이면 참(1)을 반환합니다.
SELECT NULL = NULL AS A;         -- 결과: NULL
SELECT NULL <=> NULL AS B;       -- 결과: 1
SELECT 1 <=> NULL AS C;          -- 결과: 0

4. IS, IS NOT, IS NULL, IS NOT NULL

SELECT 1 IS TRUE AS A;           -- 1
SELECT 0 IS NOT TRUE AS B;       -- 1
SELECT NULL IS NULL AS C;        -- 1
SELECT 1 IS NOT NULL AS D;       -- 1
  • IS NULL: 값이 NULL인지 확인
  • IS NOT NULL: 값이 NULL이 아닌지 확인

5. BETWEEN과 IN 연산자

5.1. BETWEEN … AND …

SELECT 3 BETWEEN 1 AND 5 AS A;         -- 1
SELECT 6 NOT BETWEEN 1 AND 5 AS B;     -- 1
  • 경계 포함: 1 ≤ 값 ≤ 5

5.2. IN(…), NOT IN(…)

SELECT 5 IN (1, 3, 5) AS A;            -- 1
SELECT 6 NOT IN (1, 3, 5) AS B;        -- 1

✅ IN 절 안에 NULL이 포함되면 전체 비교가 NULL로 처리될 수 있으니 주의하세요.


6. 실전 예제 모음

6.1. 단순 조건 필터링

SELECT *
FROM Reservation
WHERE RoomNum = 504;

6.2. 복합 조건: 날짜 범위 + IN

SELECT *
FROM Reservation
WHERE ReserveDate BETWEEN '2024-01-01' AND '2024-12-31'
  AND RoomNum IN (101, 102, 103);

6.3. NULL 조건 처리

SELECT *
FROM Reservation
WHERE RoomNum IS NULL;

7. 요약 정리표

연산자 사용 목적
=, !=, <, > 일반 숫자 및 문자열 비교
<=> NULL 값을 포함한 비교
IS, IS NOT TRUE, FALSE, NULL 상태 확인
IS NULL, IS NOT NULL 값의 존재 여부 확인
BETWEEN ... AND 범위 내 포함 여부
IN(...), NOT IN(...) 목록에 포함 여부 확인

질문 정리

  1. =<=>의 차이는 무엇인가요?

    • =는 NULL 비교 시 결과가 NULL(거짓),

      <=>NULL 비교도 평가하여 결과를 반환합니다.

  2. BETWEEN은 양쪽 경계 포함인가요?

    • 네, BETWEEN A AND BA ≤ 값 ≤ B 조건입니다.
  3. IN에 NULL이 포함되어 있으면 어떻게 되나요?

    • NULL 포함 시 결과가 NULL이 되어 예기치 않은 결과가 나올 수 있습니다.
  4. 문자열 비교도 가능한가요?

    • 네, 문자열도 사전순 비교로 =, <, > 연산이 가능합니다.
  5. WHERE 절에서 IS 대신 =을 써도 되나요?

    • NULL 비교에는 반드시 IS NULL을 사용해야 하며, = NULL은 항상 FALSE입니다.

카테고리:

업데이트:

댓글남기기