[Oracle] INSTR 을 통해 위치 찾기 IndexOf 기능 PL/SQL

INSTR 을 통해 위치 찾기 (Index Of)

INSTR 을 통해 위치 찾기 syntax

[INSTR | INSTRB | INSTRC | INSTR2 | INSTR4] (expression, searchString [, position [, occurrence]])

  • expression : 위치를 찾으려는 대상 문자열입니다.
  • searchString : 찾는 값입니다.
  • position : 검색을 시작할 위치입니다. 선택사항이며 기본값은 1 입니다.
  • occurrence : 몇 번째 발생을 찾을지 확인합니다. 선택사항이며 기본값은 1 입니다.

참고로 INSTR 함수는 접미사로 B, C, 2, 4가 붙는 기능도 있답니다. 각각 다음과 같은 역할을 합니다.

  • INSTR : calculates lengths using characters as defined by the input character set.
  • INSTRB : calculates lengths using bytes.
  • INSTRC : calculates lengths using Unicode complete characters.
  • INSTR2 : calculates lengths using UCS2 code points.
  • INSTR4 : calculates lengths using UCS4 code points.

IndexOf 기능 example

  • 예시1 : 'C' 를 찾습니다. 'C' 는 5번 째에 출현하기에 5 를 반환합니다.
  • 예시2 : 'C' 를 1번 문자부터 찾아가는데 2번 째 출현을 찾도록 합니다. 
  • 예시3 : 'C' 를 1번 문자부터 찾아가는데 3번 째 출현을 찾도록 합니다. 
  • 예시4 : 'D' 를 찾습니다. 'D' 문자는 없기에 0 을 반환합니다.
  • 참고로 'C' 를 1, 4 로 찾았으면 4번 째 출현은 없기에 이 또한 0 을 반환합니다.
SET SERVEROUTPUT ON

DECLARE
   VEXPRESSION   VARCHAR2 (100) := 'AABBCCABC';
   VSEARCH       VARCHAR2 (100) := 'C';
BEGIN
   DBMS_OUTPUT.PUT_LINE ('1: ' || INSTR (VEXPRESSION, 'C'));
   DBMS_OUTPUT.PUT_LINE ('2: ' || INSTR (VEXPRESSION, 'C', 1, 2));
   DBMS_OUTPUT.PUT_LINE ('3: ' || INSTR (VEXPRESSION, 'C', 1, 3));
   DBMS_OUTPUT.PUT_LINE ('4: ' || INSTR (VEXPRESSION, 'D'));
END;
/

댓글