Oracle中数字的可变大小数据类型

时间:2012-02-16 09:55:41

标签: database oracle sqldatatypes varchar2

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

1 个答案:

答案 0 :(得分:4)

是,存在可变长度数字数据类型,称为NUMBER

Oracle使用精度所需的最小空间(scale需要单个字节)分别存储精度(有效数字)和比例。

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

正如您所看到的,数据长度会精确增加。