Oracle 11g: могу ли я создать столбец чисел, в котором хранится только 1 байт?

Мне нужен столбец чисел, чтобы служить индикатором для чего-то, над чем я работаю, но я не хочу, чтобы он занимал больше одного байта на запись. Если я использую номер(1), удовлетворит ли это мое требование?

1 ответов


A NUMBER(1) столбец займет столько места, сколько потребуется для хранения 1-значного числа. Это, вероятно, будет больше 1 байта (отрицательные числа потребуют 3 байта, 0 требует 1 байт, числа 1-9 требуют 2 байта)

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

таблица с VARCHAR2(1 BYTE) столбец, с другой стороны, будет использовать не более 1 байта на строку хранения

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