3

所以使用 VARCHAR2 优于 VARCHAR 的优点主要是 VARCHAR2 根据其长度在数据库中占用可变大小的空间;当插入的列值为空时,这尤其有效,因为在这种情况下几乎没有空间被占用。因此,出于同样的原因,是否存在一种行为方式相同的数字数据类型,以便当插入的数字为 null 时不会在 db 中浪费空间?

4

1 回答 1

4

是的,可变长度数字数据类型存在,它被称为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

如您所见,数据长度随着精度的增加而增加。

于 2012-02-16T10:29:30.857 回答