Тип данных переменного размера для чисел в Oracle - PullRequest
3 голосов
/ 16 февраля 2012

Таким образом, преимущество использования VARCHAR2 по сравнению с VARCHAR заключается в том, что VARCHAR2 занимает пространство переменного размера в базе данных в зависимости от его длины; это особенно эффективно, когда вставленное значение столбца равно нулю, поскольку в этом случае пространство практически не занято. Таким образом, к тому же, есть ли тип данных для чисел, который ведет себя таким же образом, так что, когда введенное число равно нулю, пространство в db не теряется?

1 Ответ

4 голосов
/ 16 февраля 2012

Да, тип данных числа переменной длины существует, он называется NUMBER .

Oracle хранит точность (значащие цифры) и масштаб отдельно, используя минимальное пространство, необходимое для точности (масштаб занимает один байт).

NUMBER (x, y) является подтипом NUMBER, они хранятся физически так же, как обычный NUMBER, у них просто есть дополнительные ограничения.

AFAIK, эквивалента CHAR нетдля чисел.

Вы можете увидеть, как Oracle хранит данные внутри, с помощью функции DUMP :

SQL> select dump(1), dump(12345), dump(123456789) from dual;

DUMP(1)            DUMP(12345)              DUMP(123456789)
------------------ ------------------------ ------------------------------
Typ=2 Len=2: 193,2 Typ=2 Len=4: 195,2,24,46 Typ=2 Len=6: 197,2,24,46,68,90

Как видите, длина данных увеличивается с точностью.

...