Тип данных переменного размера для чисел в Oracle

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

1 ответ

Да, существует тип данных числа переменной длины, он называется 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

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

Другие вопросы по тегам