본문 바로가기

[오라클 레퍼런스 함수] INSTR - 문자열에서 부분 문자열 위치 반환

by ㅇㅍㅍ 2023. 8. 6.
[오라클 레퍼런스 함수] INSTR - 문자열에서 부분 문자열 위치 반환
728x90

INSTR

 

구문

{ INSTR
| INSTRB
| INSTRC
| INSTR2
| INSTR4
}
(string , substring [, position [, occurrence ] ])

 

목적

INSTR 함수는 string에서 substring을 검색하는 함수입니다. 검색 작업은 substring 인수를 string과 동일한 길이의 부분 문자열과 비교하여 일치 여부를 확인하는 것으로 정의됩니다. 일치하는 문자열이 발견되거나 더 이상 남은 부분 문자열이 없을 때까지 진행됩니다. string의 연속적으로 비교된 부분 문자열은 이전 비교된 부분 문자열의 첫 번째 문자로부터 오른쪽으로 하나의 문자(순방향 검색의 경우) 또는 왼쪽으로 하나의 문자(역방향 검색의 경우)으로 시작합니다. 만약 substrings과 동일한 부분 문자열이 발견되면, 함수는 해당 부분 문자열의 첫 번째 문자의 위치를 나타내는 정수를 반환합니다. 만약 해당하는 부분 문자열이 없다면, 함수는 0을 반환합니다.

 

  • position은 Oracle 데이터베이스가 검색을 시작하는 substrings의 문자를 나타내는 0이 아닌 정수입니다. 즉, substring과 비교를 시작하는 첫 번째 부분 문자열의 위치를 의미합니다. 만약 position이 음수인 경우, Oracle은 string의 끝부터 거꾸로 세어 그 위치에서 역방향으로 검색을 시작합니다.
  • occurrence은 Oracle이 string에서 substring을 검색해야 할 몇 번째 발생을 나타내는 정수입니다. occurrence의 값은 양수여야 합니다. occurrence이 1보다 큰 경우, 데이터베이스는 첫 번째 일치에서 반환하지 않고, 앞서 설명한 대로 연속적인 string의 부분 문자열을 비교하여 일치하는 발생이 occurrence 번째까지 찾을 때까지 검색을 계속합니다.

 

INSTR 함수는 입력 문자 집합에 따라 문자의 위치를 나타내는 정수를 받아들이고 반환합니다. 여기서 string의 첫 번째 문자는 위치 1을 가집니다. INSTRB는 문자 대신 바이트를 사용합니다. INSTRC는 유니코드 완전 문자를 사용합니다. INSTR2는 UCS2 코드 포인트를 사용합니다. INSTR4는 UCS4 코드 포인트를 사용합니다.

stringCHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB 또는 NCLOB와 같은 데이터 유형 중 하나일 수 있습니다. 예외적으로, INSTRC, INSTR2INSTR4stringCLOB 또는 NCLOB로 지정될 수 없습니다.

substringCHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB 또는 NCLOB와 같은 데이터 유형 중 하나일 수 있습니다.

반환되는 값은 NUMBER 데이터 유형입니다.

positionoccurrence는 둘 다 NUMBER 데이터 유형이거나, NUMBER로 암시적으로 변환될 수 있는 모든 데이터 유형이어야 하며, 정수로 해결되어야 합니다. positionoccurrence의 기본값은 모두 1로, 이는 Oracle이 string의 첫 번째 문자에서 substring의 첫 번째 발생을 검색하기 시작한다는 의미입니다. 반환 값은 position의 값과 관계없이 string의 시작을 기준으로 합니다.

 

참고:

 

예제

다음 예제는 문자열 CORPORATE FLOOR에서 세 번째 문자부터 문자열 "OR"을 검색합니다. "OR"의 두 번째 발생이 시작되는 위치를 CORPORATE FLOOR에서 반환합니다.

SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) "Instring"
  FROM DUAL;
 
  Instring
----------
        14

 

다음 예제에서 Oracle은 끝에서 세 번째 문자인 O부터 거꾸로 세어 FLOOR의 첫 번째 O를 찾습니다. 그리고 나서 두 번째 OR의 발생을 역방향으로 검색하면, 이 두 번째 OR의 시작이 검색 문자열의 두 번째 문자에서 시작됨을 찾습니다.

SELECT INSTR('CORPORATE FLOOR','OR', -3, 2) "Reversed Instring"
  FROM DUAL;
 
Reversed Instring
-----------------
                2

 

다음 예제는 더블바이트(double-byte) 데이터베이스 문자 집합을 가정합니다.

SELECT INSTRB('CORPORATE FLOOR','OR',5,2) "Instring in bytes"
  FROM DUAL;

Instring in bytes
-----------------
               27

 


출처: 오라클 레퍼런스

원문 링크: Oracle INSTR 함수 문서

 

반응형

댓글