Oracle 기준으로, 위치코드에서 첫 번째 '-' 바로 뒤의 두 자리… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 8회
Oracle 기준으로, 위치코드에서 첫 번째 '-' 바로 뒤의 두 자리(랙 번호)만 다음 결과처럼 조회하려 한다. ( ㉠ )에 들어갈 식으로 옳은 것은?[로케이션]
| 품목코드 | 위치코드 |
|---|---|
| P1 | A-03-12 |
| P2 | B1-07-02 |
| P3 | C-11-30 |
| P4 | DD-02-05 |
SELECT 품목코드, ( ㉠ ) AS 랙 FROM 로케이션 ORDER BY 품목코드;
[원하는 결과]
| 품목코드 | 랙 |
|---|---|
| P1 | 03 |
| P2 | 07 |
| P3 | 11 |
| P4 | 02 |
1
SUBSTR(위치코드, INSTR(위치코드, '-') + 1, 2)
2
SUBSTR(위치코드, LENGTH(위치코드) - 4)
3
LTRIM(SUBSTR(위치코드, 2, 3), '-')
4
SUBSTR(위치코드, 3, 2)
해설
INSTR(위치코드, '-')는 첫 번째 하이픈의 위치를 돌려주므로 여기에 1 을 더한 곳부터 2글자를 자르면 앞부분 길이가 달라도 03·07·11·02 가 나온다.고정 위치로 자르는 식은 앞 토막이 B1·DD 처럼 두 글자인 코드에서 어긋난다.
- 시작 위치를 3 으로 고정하면 B1-07-02 에서 '-0' 이 나온다.
- 2~4번째 글자에서 하이픈만 지우면 B1 은 '1-0', DD 는 'D-0' 이 된다.
- 뒤에서 5글자를 자르면 '03-12' 처럼 뒤 토막까지 함께 나온다.
오류나 개정된 내용이 보이면 알려주세요