[Oracle] 문자열 자르기 / 구분자로 자르기 (SUBSTR, INSTR) 사용법 & 예제

이번 포스팅에서는 오라클에서 문자열을 자를때 사용하는 SUBSTR()와 구분자로 자를때 구분자만큼의 위치를 리턴하는 INSTR() 함수에 대해 포스팅하겠습니다.

 

문자열 자르기 SUBSTR( ) 함수

--사용법(문자열, 시작위치, 길이)
SUBSTR(CHAR,POS,LEN)
--예제
WITH EXAMPLE AS(
SELECT '동해물과 백두산이 마르고 닳도록' AS STR FROM DUAL
)

SELECT
SUBSTR(STR,1,4), --STR의 1번째 글자부터 4개 자르기
SUBSTR(STR,5,5), --STR의 5번째 글자부터 5개 자르기
SUBSTR(STR,10), --STR의 10번째 글자부터 끝까지 자르기
SUBSTR(STR,-7,3), --STR의 뒤에서 3번째 글자부터 3글자 자르기
SUBSTR(STR,-3), --STR의 뒤에서 3번째 글자부터 끝까지 자르기
FROM
EXAMPLE

문자열 자르기

오라클은 SQL처럼 LEFT, RIGHT라는 함수가 없어 문자열 자르기를 SUBSTR함수로만 잘라야합니다. SUBSTR은 문자열인 CHAR의 POS번째 문자부터 LEN길이만큼 잘라낸 결과를 리턴하는 함수입니다. POS값이 0이오면 디폴트값인 1, 즉 문자열의 첫번째를 가리키고 음수가 오면 문자열의 뒤에서부터 시작하여 카운트한 숫자를 의미합니다. LEN값을 생략할수도 있는데 LEN값을 생략하게 되면 POS번째 문자부터 나머지 모두를 반환합니다. 

 

구분자로 문자열 자르기 / 문자열 위치 찾기 INSTR( ) 함수

--사용법(문자열, 타겟문자열, 시작위치, 횟수)
INSTR(STR,SUBSTR,POS,OCCUR)
--예제
WITH EXAMPLE AS(
SELECT '동해물과 백두산이 마르고 닳도록' AS STR FROM DUAL
)

SELECT
INSTR(STR, ' '), --' ' STR에서 띄어쓰기 있는 문자 위치 찾기
INSTR(STR, ' ', 7), --STR의 7째 문자부터 띄어쓰기가 있는 문자 위치 찾기
INSTR(STR, ' ', 7,2), --STR의 7째 문자부터 2번째 띄어쓰기가 있는 문자 찾기
SUBSTR(STR, 0, INSTR(STR, ' ', 1, 2)) --띄어쓰기 2번째 문자열까지 문자열 자르기
FROM
EXAMPLE

문자열 검색

프로그래밍을 하다보면 문자열을 길이로 자르고싶은게 아니라 특정 구분자로 잘라야할때가 있습니다. 주로 전화번호나 주소같은경우가 대표적이죠. (위와같이 특정 문자뿐만아니라 띄어쓰기(공백)도 가능합니다.) 이때는 INSTR이라는 함수로 먼저 구분자까지의 문자를 찾고 SUBSTR을 사용하여 문자열을 자르면 됩니다. INSTR함수는 STR문자열에서 SUBSTR과 일치하는 위치를 반환하는데 POS는 시작위치로 명시해주지않으면 1로 들어갑니다. OCCUR은 횟수를 의미하는데 마찬가지로 명시해주지 않으면 1을 반환하여 위의 예제와 같은 결과가 나오게 됩니다.

댓글

Designed by JB FACTORY