首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Oracle varchar2有一个强制的大小作为定义参数?

为什么Oracle varchar2有一个强制的大小作为定义参数?
EN

Stack Overflow用户
提问于 2010-02-11 07:52:28
回答 3查看 32.6K关注 0票数 16

我想知道为什么Oracle在VARCHAR2的定义中需要size参数。

我认为这是为了约束。像NUMBER dataType一样,oracle将此参数作为可选参数是不是更好的选择?

我经常在调整旧表的大小时遇到问题,因为有时一个值比VARCHAR2列的大小定义要大。

这与定义VARCHAR2(10VARCHAR2(1000)的类型是一样的。

我想,这是一个不必要的约束。如果没有,你知道这个约束产生了有用的结果的真实案例吗?为什么在NUMBER类型中没有这样的声明?

EN

回答 3

Stack Overflow用户

发布于 2010-02-11 11:57:48

为什么不让每个数据库表中的每一列都是CLOB?这样你就不必担心最大长度了。

但是,说真的:

数据类型长度约束存在的原因与任何约束相同:它们通过确保表中成功存储的任何数据都符合您定义的约束,减少了在所有应用程序代码中散布的错误检查量。

票数 5
EN

Stack Overflow用户

发布于 2010-02-11 13:24:36

从提取信息的角度来看,知道字段有多大是非常有用的。例如,如果您必须在信封上打印地址或将其显示在屏幕上,则需要知道字段必须有多大。

或者买很大的信封。

票数 3
EN

Stack Overflow用户

发布于 2016-01-18 21:44:54

这可能会影响性能:在MySQL中,temporary tablesMEMORY tablesVARCHAR列存储为固定长度的列,并填充到其最大长度。

如果您设计的VARCHAR列比所需的最大大小大得多,那么您将消耗更多的内存。这会影响cache efficiency, sorting speed, etc

所以你给出了字符串下的最大长度。比如,如果你的最大字符长度是10,所以不要给出他的长度是100或者更多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2241238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档