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(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번째 파라미터의 의미는 찾고자하는 문자열 '|' 이 검색대상중에 여러번 존재할때 선언한 번째의 인덱스를
리턴하라는 의미이다.
'닷컴's_열공 > Database' 카테고리의 다른 글
오라클 JOB (0) | 2012.04.20 |
---|---|
PL/SQL 블록 예제 (0) | 2012.04.20 |
TOAD 개발하기 좋은 폰트 만들기 (0) | 2010.12.17 |
행을 열로 바꿔보자. (0) | 2009.03.20 |
sybase - oracle 차이점 (0) | 2009.02.13 |