Database/Oracle2011. 6. 14. 00:12

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
Posted by 아로나