Oracle 기준으로 다음 SQL의 실행 결과로 옳은 것은?[도서]도서… | [SQLD] SQL 개발자 기출유형 모의고사 5회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 5회
Oracle 기준으로 다음 SQL의 실행 결과로 옳은 것은?[도서]
| 도서번호 | 청구기호 | 쪽수 |
|---|---|---|
| B1 | 813.6-한12 | 250 |
| B2 | 911-이7 | 300 |
| B3 | 005.13-박104 | 401 |
| B4 | 400 | 120 |
SELECT 도서번호,
SUBSTR(청구기호, 1, INSTR(청구기호, '-') - 1) AS 분류,
SUBSTR(청구기호, -2) AS 끝,
CEIL(쪽수 / 100) AS 묶음
FROM 도서
ORDER BY 도서번호;1
| 도서번호 | 분류 | 끝 | 묶음 |
|---|---|---|---|
| B1 | 813.6 | 12 | 3 |
| B2 | 911 | 이7 | 3 |
| B3 | 005.13 | 04 | 5 |
| B4 | (null) | 00 | 2 |
2
| 도서번호 | 분류 | 끝 | 묶음 |
|---|---|---|---|
| B1 | 813.6 | 12 | 3 |
| B2 | 911 | 이7 | 3 |
| B3 | 005.13 | 04 | 4 |
| B4 | (null) | 00 | 1 |
3
| 도서번호 | 분류 | 끝 | 묶음 |
|---|---|---|---|
| B1 | 813.6 | 12 | 2 |
| B2 | 911 | 이7 | 3 |
| B3 | 005.13 | 04 | 4 |
| B4 | (null) | 00 | 1 |
4
| 도서번호 | 분류 | 끝 | 묶음 |
|---|---|---|---|
| B1 | 813.6 | 12 | 3 |
| B2 | 911 | 이7 | 3 |
| B3 | 005.13 | 04 | 5 |
| B4 | 400 | 00 | 2 |
해설
B4 는 하이픈이 없어 INSTR 결과가 0 이고 SUBSTR 길이가 -1 이 되므로 Oracle 은 NULL을 돌려주며, SUBSTR(청구기호, -2) 는 뒤에서 두 글자를 잘라 00 이 된다.
CEIL은 소수를 올리므로 2.5·3·4.01·1.2 가 차례로 3·3·5·2 가 된다.
- B4 분류를 400 으로 본 표는 INSTR 가 0 일 때 문자열 전체가 나온다고 오해했다.
- 4.01 을 4, 1.2 를 1 로 둔 표는 CEIL 을 반올림처럼 계산했다.
- 2.5 를 2 로 둔 표는 CEIL 을 FLOOR 처럼 내림으로 계산했다.
오류나 개정된 내용이 보이면 알려주세요