본문 바로가기
IT/SQL

❓ WHERE 절이 있는데 조건이 왜 안 먹히나요?

by 맘솔 2025. 5. 11.

 

SQL 쿼리 작성 후 결과를 보면, 분명 WHERE 절을 썼는데도

조건이 전혀 적용되지 않은 결과가 나올 때가 있습니다.

 

이번 글에서는 실무에서 특히 자주 발생하는

‘WHERE 절 조건 무시 현상’ 3가지 경우를 정리해봅니다.

 

❶ NULL 값 비교 실수 – = NULL은 항상 FALSE

SQL에서는 NULL은 ‘비어 있는 값’이므로, 일반적인 비교 연산자(=, !=)로 비교하면 조건이 적용되지 않습니다.


-- 잘못된 예시
SELECT * FROM employee WHERE commission_pct = NULL;

-- 올바른 예시
SELECT * FROM employee WHERE commission_pct IS NULL;
  

IS NULL 또는 IS NOT NULL로 비교해야 정확한 필터링이 가능합니다.

 

❷ 괄호 없는 OR 조건 – 논리 흐름 깨짐

다중 조건을 조합할 때 괄호 생략으로 원하지 않는 결과가 포함되는 경우가 있습니다.


-- 잘못된 예시
SELECT * FROM customer
WHERE grade = 'VIP' OR grade = 'GOLD' AND region = '서울';

-- 올바른 예시
SELECT * FROM customer
WHERE (grade = 'VIP' OR grade = 'GOLD') AND region = '서울';
  

AND > OR 우선순위 때문에, 의도하지 않은 필터링이 적용됩니다.

 

❸ 데이터 타입 불일치 – 문자열과 숫자 비교

컬럼이 숫자인데 문자열로 비교하면,

**오라클은 비교가 안 되거나 암묵적 변환이 일어나 필터가 적용되지 않을 수 있습니다.**


-- 잘못된 예시
SELECT * FROM orders WHERE order_id = '1001';

-- 개선된 예시 (숫자 컬럼이면 숫자로 비교)
SELECT * FROM orders WHERE order_id = 1001;
  

▶ 정렬이 이상하거나, 인덱스가 먹지 않아 성능도 떨어질 수 있습니다.

 

✅ 정리 – WHERE 절, 정확하게 써야 작동합니다

  • ✔ NULL은 항상 IS NULL
  • ✔ OR 조건은 괄호로 묶어서 명확하게
  • ✔ 데이터 타입은 컬럼 정의 확인 후 일치시킬 것

조건이 있는데도 적용되지 않는다면,

오늘 소개한 3가지 중 하나일 가능성을 생각하고 쿼리 테스트 해보시길 바랍니다.

 

단순해 보이는 WHERE 절에 숨은 구멍이 있을 수 있습니다.