Oracle 11g: можно ли создать числовой столбец, в котором будет храниться только 1 байт? - PullRequest
8 голосов
/ 17 февраля 2012

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

1 Ответ

20 голосов
/ 17 февраля 2012
Столбец

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
...