반응형
REGEXP_INSTR 정의 

   SQL에서 문자열에서 정규식과 일치하는 패턴의 위치를 찾는 함수입니다. 이 함수는 Oracle, MySQL, PostgreSQL 및 다른 일부 데이터베이스 시스템에서 사용할 수 있습니다.

 

예제를 활용해 해당 함수를 분석해 보겠습니다. 

SELECT REGEXP_INSTR('CodeP

SELECT REGEXP_INSTR('CodePis a great teacher, and CodeP is also a programmer', 'CodeP', 1, 1, 'i') as position,
               REGEXP_INSTR('CodeP is a great teacher, and CodeP is also a programmer', 'CodeP', 1, 2, 'i') as position2,
               REGEXP_INSTR('CodeP is a great teacher, and CodeP is also a programmer', 'CodeP', 16, 1, 'i') as position3,
               REGEXP_INSTR('CodeP is a great teacher, and CodeP is also a programmer', 'codep', 1, 1, 'i') as position4;

 

이 예제에서는 문자열 "CodeP is a great teacher, and CodeP is also a programmer"에서 "CodeP" 패턴을 찾아보도록 하겠습니다.

source_string / pattern  
  • source_string: 패턴을 찾을 대상 문자열입니다. 이 예제에서는 "CodeP is a great teacher, and CodeP is also a programmer"가 source_string이 됩니다.
  • pattern: source_string에서 찾을 패턴입니다. 이 예제에서는 "CodeP"가 pattern이 됩니다.
start_position 
  • start_position: source_string에서 패턴 검색을 시작할 위치입니다. 이 예제에서는 첫 번째 REGEXP_INSTR 함수에서 start_position이 1로 설정되어 있으므로, 문자열의 처음부터 패턴 검색을 시작합니다. 두 번째 REGEXP_INSTR 함수에서 start_position이 1로 설정되어 있으므로, 문자열의 처음부터 다시 패턴 검색을 시작합니다. 세 번째 REGEXP_INSTR 함수에서 start_position이 16으로 설정되어 있으므로, 문자열의 16번째 위치부터 패턴 검색을 시작합니다.
 occurrence 
  • occurrence: 반환할 패턴의 인스턴스입니다. 이 예제에서는 첫 번째 REGEXP_INSTR 함수와 두 번째 REGEXP_INSTR 함수에서 occurrence가 각각 1과 2로 설정되어 있으므로, pattern의 첫 번째 인스턴스와 두 번째 인스턴스를 각각 반환합니다. 세 번째 REGEXP_INSTR 함수에서 occurrence가 1로 설정되어 있으므로, start_position에서 시작하여 첫 번째 pattern 인스턴스를 반환합니다.
match_option 
  • match_option: 패턴 검색에 사용할 매칭 옵션입니다. 이 예제에서는 match_option이 'i'로 설정되어 있으므로, 대소문자를 구분하지 않고 패턴을 검색합니다. 네 번째 REGEXP_INSTR 함수에서 "codep"라는 패턴을 찾으려고 시도하지만, match_option이 'i'로 설정되어 있으므로, 대소문자를 구분하지 않고 검색하기 때문에 "CodeP" 패턴과 일치하는 첫 번째 인스턴스를 찾아서 1을 반환합니다.
정리

따라서, REGEXP_INSTR 함수는 source_string에서 pattern을 검색하여 해당 패턴의 위치를 반환하며, start_positionoccurrence 매개 변수를 사용하여 검색을 시작할 위치 및 반환할 패턴 인스턴스를 지정할 수 있습니다. 또한 match_option 매개 변수를 사용하여 대소문자를 구분하지 않고 검색할 수 있습니다.

결과

+-----------+------------+------------+-------------+
| position | position2 | position3 | position4 |
+-----------+------------+------------+-------------+
| 1            | 28          | 28           | 1              |
+-----------+------------+------------+-------------+

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기