본문 바로가기
2.2 DB/ORACLE

[Oracle] 숫자,문자 자르기 함수 (SUBSTR)

by Dohi._. 2024. 10. 17.
728x90

문자를 자르는 함수로 유명한 SUBSTR함수입니다.

 

사용법

SUBSTR(data,start,length)

data : 자를 데이터

start : 시작점

length : 자를 문자열의 길이 (생략가능 생략시 끝까지)

 

 

예시

1. 문자 자르기 (사용법)

SELECT  SUBSTR('가나다라마',1,3)  -- 문자자르기 첫번째부터 3개
      , SUBSTR('가나다라마',3)    -- 3번째부터 끝까지   
      , SUBSTR('가나다라마',-2)   -- 뒤에서 2번째부터 끝까지 잘라보기  
      , SUBSTR('가나다라마',3,0)  -- 0개를 잘라보기   
      , SUBSTR('가나다라마',3,-1) --  -1 개를 잘라보기
  FROM dual
 ;

함수해석

 SUBSTR('가나다라마',1,3) 

가나다라마의 1번째글자(가) 에서부터 3개의 글자 => 가나다

 

SUBSTR('가나다라마',3)    

가나다라마의 3번째글자(다)에서 끝까지 반환(생략했으니) => 다라마

 

SUBSTR('가나다라마',-2)

 가나다라마의 뒤에서 2번째글자(라)에서 끝까지 => 라마

   
SUBSTR('가나다라마',3,0), SUBSTR('가나다라마',3,-1) 

가나다라마의 3번째 글자에서  길이가 0개 -1개 이므로 없는 문자네요 => 반환X

 

 

 

 

2. 숫자 자르기

SELECT  SUBSTR(1230321,1,3)  -- 숫자를 자르기
      , SUBSTR(000321,1,3)   -- 자르기전에 0이있을때 
      , SUBSTR(1230321,-4)   --자르고 난후 앞에 0이있을때
  FROM dual
 ;

숫자도 동일하게 자르지만

자르기 전에 0이있을때는 당연하게도 숫자이기 때문에 앞의 0이 사라지고 자르게된다.

자르고난 후에 0이 처음에 있을때는 반환타입이 문자이기때문에 0이사라지지 않고 0321로 반환된다

 

3. 날짜 자르기

SELECT  to_char(sysdate)      -- 시간을 문자로(비교대상)
      , SUBSTR(sysdate,3)     -- 그냥 시간을 넣으면 문자로 반환하여 자른다
  FROM dual
;

날자도 잘라지는 것을 볼수있고 자르고나서

TO_CHAR와 비교를 해보면  저기에 있는 / 하나도 문자로 인식하고 있다는 것을 알수있다.

 

 

 

+) 추가 

SUBSTRB

동일하지만 바이트 단위로 바르는 함수이다 

한글의 경우 Charater Set에 따라 3바이트나 2바이트냐 차이가 있으니 잘알아보고 사용하도록하자

SELECT SUBSTRB ('가나다',3,2)
	 , SUBSTRB ('가나다',3)
	 , SUBSTRB ('abc',2)
	 , SUBSTRB ('abc',1,2)
  FROM dual
;

해당 DB에서는 한글이 2btye이다

1~2 = 가 
3~4 = 나 
5~6 = 다 

라는 사실을 보고 본다면 SUBSTR랑 별차이없음을 알 수 있다

728x90

댓글