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

发布于 2025-01-06 12:35:56 字数 150 浏览 0 评论 0原文

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

So the advantage of using VARCHAR2 over VARCHAR is mainly that VARCHAR2 occupies variable size space in database depending on its length; this comes especially efficient when the column value inserted is null because virtually no space is occupied in this case. So by the same token, is there a data type for numbers that behaves in the same way so that when the number inserted is null no space is wasted in db?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

享受孤独 2025-01-13 12:35:56

是的,存在变长数字数据类型,它称为 NUMBER

Oracle 使用精度所需的最小空间(小数位占用一个字节)分别存储精度(有效数字)和小数位。

NUMBER(x,y) 是 NUMBER 的子类型,它们的物理存储方式与常规 NUMBER 相同,只是有额外的约束。

AFAIK,对于数字来说,没有 CHAR 的等价物。

您可以通过 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

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

Yes, variable-length number data type exists, it's called NUMBER.

Oracle stores the precision (significant digits) and the scale separately, using the minimum space needed for precision (scale takes a single byte).

NUMBER(x,y) are a subtype of NUMBER, they are stored physically in the same way as regular NUMBER, they just have extra constraints.

AFAIK, there is no equivalent of CHAR for numbers.

You can see how Oracle stores data internally with the DUMP function:

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

As you can see the data length increases with precision.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文