Column A NUMBER(1)
will take up as much space as needed to store a 1-digit number. This will probably be more than 1 byte (negative numbers require 3 bytes, 0 - 1 byte, digits 1-9 - 2 bytes)
SQL> create table foo( col1 number(1) ); Table created. SQL> insert into foo values( 1 ); 1 row created. SQL> insert into foo values( 9 ); 1 row created. SQL> insert into foo values( -7 ); 1 row created. SQL> select vsize(col1), col1 from foo; VSIZE(COL1) COL1 ----------- ---------- 2 1 2 9 3 -7
A table with a VARCHAR2(1 BYTE)
column VARCHAR2(1 BYTE)
, on the other hand, will use no more than 1 byte per storage row
SQL> create table bar( col1 varchar2(1) ); Table created. SQL> insert into bar values( 'Y' ); 1 row created. SQL> insert into bar values( 'N' ); 1 row created. SQL> select vsize(col1), col1 from bar; VSIZE(COL1) C ----------- - 1 Y 1 N
source share