티스토리 뷰

Oracle instr 함수


instr함수는 특정 문자의 위치를 찾아 위치의 순번을 리턴하는 함수입니다. instr과 instrb가 있으며, 차이점은 한글을 1byte로 계산할지 2byte로 계산할지 여부 입니다. b가 붙으면 2byte로 계산 됩니다. 그럼 파라메터 및 간단한 예제를 통해 자세히 알아보도록 하겠습니다.


| 파타메터

  > instr 함수의 파라메터는 4가지가 있습니다. 1번째 문자열, 2번재 찾는 문자, 3번째 찾기 시작 위치, 4번째 찾은 위치의 순번입니다. 즉, 문자열에서 특정문자의 위치를 찾을수 있는 함수이며 찾기 시작 위치 및 찾은 위치의 순번을 활용하여 좀더 다양하게 위치를 찾을수 있습니다.


| 예제

 > "토끼|도마뱀|여우|" 문자열이 있습니다. 이 문자열에서 파이프(|) 문자의 위치를 찾아보겠습니다.


위의 예제를 보시면 COL1의 결과는 문자열에서 |를 찾은 첫번째 위치를 리턴하였습니다. COL2의 결과는 문자열의 4번째부터 |를 찾은 결과를 리턴합니다. COL3은 문자열 첫번째 부터 |를 차자고 2번째로 찾은 위치를 리턴합니다. 위의 샘플은 INSTR로 사용하여 한글 한자도 1BYTE로 계산 합니다.


| 응용

 > | 단위로 되어 있는 문자열을 ROW단위로 변환하는 방법에 INSTR을 활용한 방법입니다. INSTR외에도 CONNECT BY LEVEL 을 활용하였습니다.


CONNECT BY LEVEL 에 ROW의 갯수를 지정하는데요. 문자열 총 길이에서 |를 뺀 길이의 차이가 |의 갯수가 됩니다. LEVEL은 ROW의 숫자로 생각하시면 문자열에서 첫번째 로우에는 |를 첫번째위치를 찾아서 다음 위치까지의 길이만큼 자르고 있습니다. 이런식으로 활용하여 사용하시면 무궁무진하게 활용할 수 있습니다.


모두 즐프하세요~


댓글