首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >变量: 2,4,8,16,等等?或者1,3,7,15,等等?

变量: 2,4,8,16,等等?或者1,3,7,15,等等?
EN

Stack Overflow用户
提问于 2009-08-03 19:40:57
回答 3查看 5.4K关注 0票数 5

我看到一直在使用VARCHAR(255)而不是VARCHAR(256),但我也看到正在使用VARCHAR(16)而不是VARCHAR(15)。对我来说,这似乎不一致。如果一个额外的字节被用来存储VARCHAR的长度,那么这个规则不是也应该应用于更小的长度,比如2,4,8为1,3,7吗?

还是我完全漏掉了什么?

换句话说,如果我有一个我知道永远不会大于12的数字,我应该直接使用VARCHAR(15)或VARCHAR(16)来代替吗?因为它使用与VARCHAR(12)相同的空间量?如果是,我应该使用哪一个? 15还是16?当我接近256的时候,这个规则会改变吗?

根据项目的不同,我同时使用MySQL和SQL。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-03 19:45:15

换句话说,如果我有一个永远不会大于12的数字,我应该直接使用

(15)或VARCHAR(16)吗?

不是的!使用varchar(12) (如果长度相当恒定,甚至可以使用char(12) )。

曾几何时,在某些系统(including MySql prior to 5.0.3)上,varchar类型被限制为255个字符,因为存储的第一个字节表示字段的长度。考虑到这一限制,想要允许合理数量的文本的开发人员将选择255,而不是完全使用不同的数据类型。

但是,如果您知道数据的大小,那么一定要对数据库使用这个大小。

票数 11
EN

Stack Overflow用户

发布于 2009-08-03 19:47:27

它与奇数或偶数无关。

过去,在各种DBMSes中,255个字符通常是VARCHAR的最大长度。当时不是LOB (大型对象)的字段的长度限制是255字节(1字节整型)。因此,第一个字节用于存储字段的长度(0-255),其余的n字节用于存储字符。这就是为什么你经常看到VARCHAR(255)的原因。

如果该字段永远不会大于12,则使用VARCHAR(12)

票数 4
EN

Stack Overflow用户

发布于 2009-08-03 19:46:14

我认为最初的问题是,对于某些系统,VARCHAR(...)限制为255,因为当您使用一个字节来编码实际长度时,最多只能表示255个字节的长度。

VARCHAR(16) / VARCHAR(15)很可能会让人想起这些起源,但这两个值没有什么特别之处。

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

https://stackoverflow.com/questions/1224226

复制
相关文章

相似问题

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