본문 바로가기
DBMS/ORACLE

오라클 숫자(number), 날짜(date) 타입 컬럼 byte size 구하기

by 드바 2023. 9. 5.
- oracle 컬럼 타입 중 숫자, 날짜 등의 byte 사이즈를 구하는 방법
- 사이즈를 구하는 length(글자수), lengthb(byte size), vsize(byte size) 함수의 결과 비교
- 숫자나 날짜 컬럼은 vsize 함수를 사용하여 byte 사이즈를 구할 수 있다

테스트 테이블 및 데이터 생성

CREATE TABLE sk.t1
(c1 varchar(100), c2 NUMBER(10), c3 DATE) ;

INSERT INTO sk.t1 values('가나다', 1234, sysdate) ;
INSERT INTO sk.t1 values('ABC', 123456, sysdate) ;
COMMIT ;

SQL> select * from sk.t1 ;

C1		   C2 C3
---------- ---------- --------
가나다           1234 23/09/05
ABC	       123456 23/09/05

 
문자 타입 비교
length 는 글자수를 출력함
lengthb, vsize 는 문자의 byte size 를 출력함

SQL> SELECT
c1, LENGTH(c1), lengthb(c1), vsize(c1)
FROM sk.t1 ;

C1	   LENGTH(C1) LENGTHB(C1)  VSIZE(C1)
---------- ---------- ----------- ----------
가나다              3           9          9
ABC		    3		3	   3

 
숫자 타입 비교
length, lengthb 는 숫자를 문자 형태로 변경하여 사이즈를 출력함
vsize 는 실제 숫자 컬럼의 byte size 를 출력함

SQL> SELECT
c2, LENGTH(c2), lengthb(c2), vsize(c2)
FROM sk.t1 ;
  2    3  
	C2 LENGTH(C2) LENGTHB(C2)  VSIZE(C2)
---------- ---------- ----------- ----------
      1234	    4		4	   3
    123456	    6		6	   4

 
날짜 타입 비교
length 함수는 날짜 형식에 따라 결과 값이 달라짐
vsize 는 형식에 날짜 표현 형식에 상관없이 해당 컬럼 타입의 byte size 를 보여준다

SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYYMMDD' ; -- 날짜 형식 변경

Session altered.

SQL> SELECT
to_char(c3,'YYYYMMDD HH24MISS') char_c3
, LENGTH(to_char(c3,'YYYYMMDD HH24MISS')) char_length
, lengthb(to_char(c3,'YYYYMMDD HH24MISS')) char_lengthb
, vsize(to_char(c3,'YYYYMMDD HH24MISS')) cahr_vsize
, c3, LENGTH(c3), lengthb(c3), vsize(c3)
FROM sk.t1 ;

CHAR_C3 	CHAR_LENGTH CHAR_LENGTHB CAHR_VSIZE C3	     LENGTH(C3) LENGTHB(C3)  VSIZE(C3)
--------------- ----------- ------------ ---------- -------- ---------- ----------- ----------
20230905 192542 	 15	      15	 15 20230905	      8 	  8	     7
20230905 195727 	 15	      15	 15 20230905	      8 	  8	     7


SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYYMMDD HH24MISS'; -- 날짜 형식 변경

Session altered.

SQL> SELECT
to_char(c3,'YYYYMMDD HH24MISS') char_c3
, LENGTH(to_char(c3,'YYYYMMDD HH24MISS')) char_length
, lengthb(to_char(c3,'YYYYMMDD HH24MISS')) char_lengthb
, vsize(to_char(c3,'YYYYMMDD HH24MISS')) cahr_vsize
, c3, LENGTH(c3), lengthb(c3), vsize(c3)
FROM sk.t1 ;

CHAR_C3 	CHAR_LENGTH CHAR_LENGTHB CAHR_VSIZE C3		    LENGTH(C3) LENGTHB(C3)  VSIZE(C3)
--------------- ----------- ------------ ---------- --------------- ---------- ----------- ----------
20230905 192542 	 15	      15	 15 20230905 192542	    15		15	    7
20230905 195727 	 15	      15	 15 20230905 195727	    15		15	    7
 

댓글