문자를 자르는 함수로 유명한 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랑 별차이없음을 알 수 있다
'2.2 DB > ORACLE' 카테고리의 다른 글
[Oracle] 데이터베이스의 문자 집합 확인하기 (0) | 2024.10.18 |
---|---|
[Oracle] 글자의 바이트(byte)알려주는 함수 (VSIZE, LENGTHB) feat. 한글 바이트 확인 +두 함수 차이점 (0) | 2024.10.18 |
[Oracle] 문자 채우기 (LPAD, RPAD) +응용 (0) | 2024.10.17 |
[Oracle] CLOB과 BLOB의 정의 (0) | 2024.10.11 |
[Oracle] 시간과 숫자를 원하는 단위까지 절사하는 함수 (TRUNC) (0) | 2024.10.07 |
댓글