我看到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,根据该项目。

有帮助吗?

解决方案

换句话说,如果我有一个号码我知道永远不能以上12时,我应该只是继续前进和使用VARCHAR(15)或VARCHAR(16),而不是?

不!使用varchar(12)(或甚至char(12)如果长度相当定)。

曾几何时varchar类型被限制为255字上的一些系统(包括MySql前5.0.3),因为第一个字存储所指的长度的领域。鉴于这种限制,开发者想要让一个合理数量的文本会选择255而不是将不同的数据类型了。

但如果你知道你的大小的数据,肯定使用的正是这一尺寸的数据库。

其他提示

它无关的奇数或偶数。

在历史上,255个字符经常被各种的DBMS一个VARCHAR的最大长度。对于不是一个LOB(大对象)当时的场的长度限为255个字节(1个字节INT)。所以,使用的第一个字节来存储字段(0-255)的长度,而对于字符的剩余字节n。这就是为什么你经常看到VARCHAR(255)

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

我觉得原来的问题是,对于某些系统VARCHAR(...)被限制在255,因为当你使用一个字节编码的实际长度,你只能表示长度高达255。

VARCHAR(16)/ VARCHAR(15),这是最有可能让人联想到这些起源的,但并没有什么特殊的两个值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top