SELECT SUBSTR(MSG, 1, INSTR(MSG, '|', 1, 1) - 1) MSG_1,
SUBSTR(MSG, INSTR(MSG, '|', 1, 1) + 1, INSTR(MSG, '|', 1, 2) - INSTR(MSG, '|', 1, 1) - 1) MSG_2,
SUBSTR(MSG, INSTR(MSG, '|', 1, 2) + 1, INSTR(MSG, '|', 1, 3) - INSTR(MSG, '|', 1, 2) - 1) MSG_3,
SUBSTR(MSG, INSTR(MSG, '|', 1, 3) + 1, INSTR(MSG, '|', 1, 4) - INSTR(MSG, '|', 1, 3) - 1) MSG_4,
SUBSTR(MSG, INSTR(MSG, '|', 1, 4) + 1) MSG_5
FROM (SELECT '111|222|333|444|555' MSG FROM DUAL)
[출처] 오라클 문자열 자르기 SUBSTR, INSTR..|작성자 또식이
※ instr 함수정의 : 찾고자하는 문자열의 인덱스를 리턴한다.
- instr(검색대상문자열 , 찾고자하는문자열 , 검색대상문자열의찾기를시작할인덱스 [, 몇번째발견한것인지선언] )
ex) INSTR(MSG, '|', 2, 3) 을 실행 하면
3번째 파라미터의 의미는 MSG문자열의 2번째 인덱스 부터(예를들어 MSG문자열이 ='1234567'
라고 가정하면 '234567' 을 대상) 검색 하라는 뜻이다.
, 4번째 파라미터의 의미는 찾고자하는 문자열 '|' 이 검색대상중에 여러번 존재할때 선언한 번째의 인덱스를
리턴하라는 의미이다.