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');
반응형
'SQL 문제 풀기 > 2. SQLD 기출 : 2024.3.01~2024.4.25' 카테고리의 다른 글
<SQLD 43> in 연산자 대한 기출문제 (0) | 2024.04.12 |
---|---|
<SQLD 42> like 연산자에 대한 기출문제 (0) | 2024.04.11 |
<SQLD 40> 서브쿼리에 대한 기출문제 (0) | 2024.04.09 |
<SQLD 39> 데이터 분석 함수에 대한 기출문제 (0) | 2024.04.08 |
<SQLD 38> 조인에 대한 기출문제 (0) | 2024.04.07 |