문제
다음 조건식의 결과로 조회되는 값으로 가장 적절한 것은?
<데이터>
| COL1 | COL2 | RESULT |
|---|---|---|
| 1 | NULL | A |
| 2 | NULL | B |
| NULL | 3 | C |
| NULL | 4 | D |
SQLSELECT RESULT FROM T WHERE NOT (COL1 = 1 OR COL2 = NULL);
① A ② B ③ C ④ 조회 결과 없음
정답
4번
해설
정답: 4. COL2 = NULL은 TRUE가 아니라 UNKNOWN이다. WHERE 절은 조건 결과가 TRUE인 행만 반환하며 FALSE와 UNKNOWN은 제외된다.
행별 판단
- A: COL1 = 1은 TRUE, COL2 = NULL은 UNKNOWN → TRUE OR UNKNOWN = TRUE → NOT TRUE = FALSE이므로 제외된다.
- B: COL1 = 1은 FALSE, COL2 = NULL은 UNKNOWN → FALSE OR UNKNOWN = UNKNOWN → NOT UNKNOWN = UNKNOWN이므로 제외된다.
- C: COL1 = 1은 UNKNOWN, COL2 = NULL은 UNKNOWN → UNKNOWN OR UNKNOWN = UNKNOWN → NOT UNKNOWN = UNKNOWN이므로 제외된다.
- D: COL1 = 1은 UNKNOWN, COL2 = NULL은 UNKNOWN → UNKNOWN OR UNKNOWN = UNKNOWN → NOT UNKNOWN = UNKNOWN이므로 제외된다.
보충 개념
SQL에서 NULL은 = 연산자로 비교할 수 없고 IS NULL을 사용해야 한다. WHERE 절에서는 TRUE인 행만 조회된다.