문제
주어진 결과를 보고 빈칸에 들어갈 쿼리로 알맞은 것은?
| COL1 | COL2 |
|---|---|
| 1 | Smith |
| 2 | Charlie |
| 3 | Alice |
| 4 | NULL |
<결과>
| COUNT(*) |
|---|
| 4 |
① FROM EMP WHERE COL2 LIKE '%%' ② FROM EMP ③ FROM EMP WHERE COL2 LIKE '%' ④ FROM EMP WHERE COL2 LIKE '*%'
정답
2번
해설
정답: 2. 전체 행 수는 NULL을 포함하여 4건이므로 WHERE 조건 없이 FROM EMP만 사용해야 COUNT(*) 결과가 4가 된다.
오답 풀이
- 1번: SQL의 LIKE에서 와일드카드는 '%'(임의 길이)와 '_'(한 문자)뿐이며 ''는 특별한 의미 없는 일반 문자다. LIKE '%%'는 값에 '*' 문자가 들어간 행만 찾는데 그런 행이 없어 0건이므로 4가 아니다.
- 2번: WHERE 조건이 없어 COUNT(*)가 전체 4행을 센다.
- 3번: LIKE '%'는 ''로 끝나는 값만 찾고 NULL 행도 제외되어 4가 아니다.
- 4번: LIKE '%'는 ''로 시작하는 값만 찾고 NULL 행도 제외되어 4가 아니다.
보충 개념 COUNT()는 NULL 여부와 무관하게 행을 센다. 반면 WHERE의 LIKE 비교는 대상 값이 NULL이면 UNKNOWN이 되어 결과에서 제외된다. SQL LIKE의 와일드카드는 '%'와 '_'뿐이며 ''는 일반 문자로 취급된다.