반응형
안녕하세요. 개발자 Jindory입니다.
오늘은 오라클에서 문자열을 자를때 사용하는 SUBSTR()과 구분자로 자를때 구분자 만큼의 위치를 리턴하는 INSTR() 함수에 대해서 글을 작성해보려고 합니다.
문자열 자르기 SUBSTR( ) 함수
--사용법(문자열, 시작위치, 길이)
SUBSTR(CHAR,POS,LEN)
--예제
WITH TEST AS(
SELECT
'ABCDE FGHIJ KLMNO PQRST UVWXY Z' AS ALPHA
'12345678910' as NUM
FROM DUAL
)
SELECT
SUBSTR(NUM,1,5) -- NUM의 첫번째 문자부터 5글자 자르기
SUBSTR(NUM,3) -- NUM의 3번째 문자부터 자르기
SUBSTR(NUM,-6,6) -- NUM의 뒤에서 여섯번째 문자부터 6개 자르기
SUBSTR(NUM,-10) -- NUM의 뒤에서 열번째 문자부터 자르기
FROM TEST
오라클에서 문자열을 잘라서 사용하고 싶을때 SUBSTR 함수를 사용해야합니다.
SUBSTR은 문자열인 CHAR의 POS번째 문자부터 LEN길이만큼 잘라낸 결과를 리턴하는 함수입니다.
POS값에 0이오면 디폴트값인 1을 문자열의 첫번째를 가리키고 음수가 오면 문자열의 뒤에서부터 시작하여 카운트한 숫자를 의미합니다.
LEN값을 생략할수도 있는데 LEN값을 생략하게 되면 POS번째 문자부터 나머지 모두를 반환합니다.
구분자로 문자열 자르기 / 문자열 위치 찾기 INSTR( ) 함수
--사용법(문자열, 타겟문자열, 시작위치, 몇번째 위치)
INSTR(STR,SUBSTR,POS,OCCUR)
--예제
WITH TEST AS(
SELECT
'ABCDE FGHIJ KLMNO PQRST UVWXY Z' AS ALPHA
'12345678910' as NUM
FROM DUAL
)
SELECT
INSTR(ALPHA,' ') -- 첫번째 띄어쓰기 인덱스 찾기
,SUBSTR(ALPHA,INSTR(ALPHA,' ')+1,5) -- 첫번째 띄어쓰기 인덱스+1부터 5글자 자르기
,INSTR(ALPHA,' ',8) -- 8번째 인덱스 이후에 첫번째 띄어쓰기 인덱스 찾기
,SUBSTR(ALPHA,INSTR(ALPHA,' ',8)+1,5) -- 8번째 인덱스 이후에 첫번째 띄어쓰기 인덱스+1부터 5글자 자르기
,INSTR(ALPHA,' ',8,2) -- 8번째 인덱스 이후에 두번째 띄어쓰기 인덱스 찾기
,SUBSTR(ALPHA,INSTR(ALPHA,' ',8,2)+1,5) -- 8번째 인덱스 이후에 두번째 띄어쓰기 인덱스+1부터 5글자 자르기
,INSTR(ALPHA,'*') -- 없는 문자를 넣으면 0을 반환한다
FROM TEST
때때로 특정 구분자로 잘라야할때가 있습니다.
이때는 INSTR이라는 함수로 먼저 구분자까지의 문자를 찾고 SUBSTR을 사용하여 문자열을 자르면 됩니다.
INSTR함수는 STR문자열에서 SUBSTR과 일치하는 위치를 반환하는데 POS는 시작위치로 명시해주지않으면 1로 들어갑니다.
OCCUR은 횟수를 의미하는데 마찬가지로 명시해주지 않으면 1을 반환하여 위의 예제와 같은 결과가 나오게 됩니다.
만일 존재하지 않는 문자를 입력하면 0을 반환합니다.
혹시라도 정정할 내용이나 추가적으로 필요하신 정보가 있다면 댓글 남겨주시면 감사하겠습니다.
오늘도 Jindory 블로그에 방문해주셔서 감사합니다.
[ 참조 ]
반응형