ebson

[ ORACLE ] INSTR 함수를 사용해 문자열에서 특정 문자 인덱스를 찾고 SUBSTR 함수를 사용해 특정 구분자 사이의 문자열을 추출하기 본문

DATABASE STUDY

[ ORACLE ] INSTR 함수를 사용해 문자열에서 특정 문자 인덱스를 찾고 SUBSTR 함수를 사용해 특정 구분자 사이의 문자열을 추출하기

ebson 2023. 4. 6. 12:20

오라클 데이터베이스를 사용할 때, 특정 구분자를 포함한 문자열에서 N번째와 N+1번째 구분자 사이의 문자만을 추출해야하는 요구사항이 있을 수 있다. 이때는 INSTR 함수를 사용해 N번째와 N+1번째 구분자의 인덱스를 찾고, SUBSTR 함수를 사용해 원하는 문자열을 추출할 수 있다.

 

INSTR(원본문자열, 찾는문자, 시작인덱스, 찾는문자순번)

SELECT CODE
		, INSTR(CODE, '.', 1, 1) FST_DOT_IDX
		, INSTR(CODE, '.', 1, 2) SCD_DOT_IDX
		, INSTR(CODE, '.', 1, 3) TRD_DOT_IDX
FROM COM_MESSAGESOURCE
WHERE CODE LIKE 'a.a%'
;

[사진1] INSTR을 사용해 원본 문자열에서 원하는 문자의 인덱스를 찾은 모습

 

SUBSTR(원본문자열, 시작인덱스, 시작인덱스로부터의 길이)

SELECT CODE
		, SUBSTR(CODE, 1, INSTR(CODE, '.', 1, 2)-1) STR1
		, SUBSTR(CODE, INSTR(CODE, '.', 1, 2)+1, INSTR(CODE, '.', 1, 3)-INSTR(CODE, '.', 1, 2)-1) STR2
		, SUBSTR(CODE, INSTR(CODE, '.', 1, 3)+1) STR3
FROM COM_MESSAGESOURCE
WHERE CODE LIKE 'a.a%'
;

[사진2] INSTR으로 찾은 인덱스를 사용해 SUBSTR으로 원하는 문자열를 추출한 모습

Comments