ex)
SELECT SUBSTR(TEST,1,INSTR(TEST,'.',1,1)-1) AS FIRST,
SUBSTR(TEST,INSTR(TEST,'.',1,1)+1,INSTR(TEST,'.',1,2)-INSTR(TEST,'.',1,1)-1) AS SECOND,
SUBSTR(TEST,INSTR(TEST,'.',1,2)+1) AS THIRD
FROM (SELECT '1.22.333' TEST
FROM DUAL);
설명)
SUBSTR('Hello',1,5) => 'Hello'
SUBSTR('Hello',2,4) => 'ell'
SUBSTR('Hello',3) => 'llo' (3번째 문자열부터 끝까지 출력)
INSTR('HelloWorld','W') => 6 ('HelloWorld'에서 'W'의 위치를 숫자로 리턴)
INSTR('HelloWorld','l'1,1) => 3 (첫번째 위치에서 문자 'l'을 첫번째로 만나는 위치을 숫자로 리턴)
INSTR('HelloWorld','l'1,3) => 9 (첫번째 위치에서 문자 'l'을 세번째로 만나는 위치을 숫자로 리턴)
INSTR('HelloWorld','l'5,1) => 9 (다섯번째 위치에서 문자 'l'을 첫번째로 만나는 위치을 숫자로 리턴)
그러므로 위의 예제에서
INSTR('1.22.333','.',1,1) => 2
INSTR('1.22.333','.',1,2) => 5
가 된다.
이를 참고하여 이해하기 바란다.
간단한 위의 예제 쿼리의 결과는
아래와 같다.
FIRST SECOND THIRD
1 22 333
'Database > Oracle' 카테고리의 다른 글
롤백 세그먼트(rollback segment)란 ? (0) | 2011.06.25 |
---|---|
Oracle Lock (0) | 2011.06.22 |
아카이빙(archiving)이란? (0) | 2011.06.22 |
Oracle Cursor2 (0) | 2011.05.26 |
Oracle Cursor (0) | 2011.05.26 |