Oracle 기준으로, 상영코드(지점-관번호-시각)에서 관번호 두 자리… | [SQLD] SQL 개발자 기출유형 모의고사 9회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 9회
Oracle 기준으로, 상영코드(지점-관번호-시각)에서 관번호 두 자리만 다음 결과처럼 꺼내려 한다. ( ㉠ )에 들어갈 식으로 옳은 것은?

[상영]

상영번호상영코드
1강남-07-1930
2신촌역-03-2100
3홍대-12-1015
4일산호수-05-0900
SELECT 상영번호, ( ㉠ ) AS 관번호
  FROM 상영
 ORDER BY 상영번호;

[원하는 결과]

상영번호관번호
107
203
312
405
1
SUBSTR(상영코드, INSTR(상영코드, '-') + 1, 2)
2
SUBSTR(상영코드, 4, 2)
3
LTRIM(SUBSTR(상영코드, 3, 3), '-')
4
SUBSTR(상영코드, LENGTH(상영코드) - 6)
해설

INSTR(상영코드, '-') 가 첫 하이픈 위치를 돌려주므로 그 다음 위치부터 2글자를 자르면 지점명 길이와 관계없이 07·03·12·05 가 나온다.

지점명이 2~4글자로 달라 관번호의 시작 위치가 행마다 다르므로 고정 위치가 아닌 구분자 위치를 기준으로 잘라야 한다.

  • 길이를 생략한 SUBSTR 은 끝까지 잘라 07-1930 처럼 시각까지 나온다.
  • 3번째부터 3글자는 지점명이 2글자일 때만 맞고 신촌역은 '역-0' 이 된다.
  • 4번째부터 2글자도 지점명이 2글자인 행에서만 관번호가 나온다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 9회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기