본문 바로가기
SQL 문제 풀기/2. SQLD 기출 : 2024.3.01~2024.4.25

<SQLD 41> NULL 값 비교에 대한 기출문제

by HYEHYE_SON 2024. 4. 10.
728x90

매일 SQLD 기출 문제 풀기 챌린지


 


문제 41.

다음 주어진 테이블에서 해당 SQL문을 실행한 결과로 알맞은 것은? 

 

 

[ TEST41 ]

COL1 COL2
NULL A
1 B
2 C
3 D
4 E

 

[ SQL ]

SELECT * 
    FROM TEST41
    WHERE COL1 IN(1, 2, NULL);

 
① 

COL1 COL2
1 B
2 C

 

 


② 

COL1 COL2
2 B
2 C

 

 


③ 

COL1 COL2
1 B
2 C
3 D
4 E

 

 

 

④ 

COL1 COL2
NULL A
1 B
2 C
3 D
4 E

해설해보기

SQL 에서 null은 알 수 없는 값입니다.
따라서 null은 다른 값과 비교할 수 없기 때문에
in에 null값을 넣어주어도 null 인 행을 반환할 수 없습니다.

만약에 null 인 값에 대한 조건을 싶다면, 
IS NULL 혹은  IS NOT NULL 을 사용해주어야 합니다.

따라서 위의 문제에 대한 정답은 
COL1이 1 또는 2인 경우만 반환되기 때문에 

① 이 정답입니다. 

만약 NULL 도 출력하고 싶다면, 


WHERE col1 in(1,2) or col1 is null 

위와 같이 조건을 주어야 합니다.

 
직접 실행해보기

SELECT * 
    FROM TEST41
    WHERE COL1 IN(1, 2, NULL);


관련 스크립트

CREATE TABLE TEST41 (
    COL1 NUMBER,
    COL2 VARCHAR2(50)
);


INSERT INTO TEST41 (COL1, COL2) VALUES (NULL, 'A');
INSERT INTO TEST41 (COL1, COL2) VALUES (1, 'B');
INSERT INTO TEST41 (COL1, COL2) VALUES (2, 'C');
INSERT INTO TEST41 (COL1, COL2) VALUES (3, 'D');
INSERT INTO TEST41 (COL1, COL2) VALUES (4, 'E');

 

반응형