문제
다음 SQL의 실행 결과로 가장 적절한 것은?
테이블 MEMBERS의 데이터: STATUS: 'ACTIVE', 'INACTIVE', NULL, 'PENDING'
SQLSELECT COUNT(*) FROM MEMBERS WHERE STATUS NOT IN ('ACTIVE', 'PENDING', NULL);
① 0건 ② 1건 ③ 2건 ④ 3건
정답
1번
해설
NOT IN 절에 NULL이 포함되어 있으면, 모든 행에 대해 조건이 UNKNOWN으로 평가됩니다. SQL의 3VL(3-Valued Logic)에서 WHERE 절은 TRUE인 행만 반환하므로, UNKNOWN으로 평가되는 모든 행은 결과에서 제외됩니다. 따라서 어떤 행도 조건을 만족하지 않아 0건이 반환됩니다. ②③④는 NOT IN에서 NULL 처리 방식을 잘못 이해한 경우입니다.