mysql varchar 值为0怎么解释

就是说varchar(0)最多能存多少个字符。不知道的不要乱回答,谢谢。

第1个回答  2017-10-25
varchar的值为 0 看清楚是 值~ 值~ 值~ 值~ 值~ 值~ 不是长度
第2个回答  推荐于2017-10-25
就中文汉字来说,utf8占3个字节 ,gbk占2个字节。varchar(n),这里的n代表n个字符。
mysql表中字段总长度可以有65535个字节,意思就是 如果一个表只有varchar(n)这么一个字段,而且是utf8的话,那么这个字段最大可以有65535个字节的长度,差不多n=65585/3的字符。
为什么说差不多。因为varchar在存储的时候,会另加一个字节来记录长度(如果列声明的长度超过255字节,则使用两个字节,刚好2的8次方是255,超过255就只能用2个字节16位来记录了)。
如果表中有个char(10)和varchar(n)的话,那么就就这样,n的最大值=65535-10*3-2。

英文的话 两种编码都是一个字母是1个字节,据说全角英文占2个字节。能放多少个可以自己测试的,其中的编码知识,值得研究,但是不值得深究,我感觉太钻牛角尖了。

varchar(0),能存放多少还要看这个表中其他字段占掉多少的长度,和编码格式,才能算出来,我上面已经给出算法过程了。你慢慢理解。

这应该够清楚了。追问

我知道这些东西,我问的是0啊,这个0代表的是不能存字节呢?还是不限制字节呢??而且你说的不准确,是一个表还是一条记录最多能存65535个字节。我觉得不会是两个字段共享一个varchar最大范围,这样很不科学。网上也没有你这样的说法。我觉得这说法不正确。

追答

MyISAM表中行的最大大小为65,534字节。每个BLOB和TEXT列 

账户只占其中的5至9个字节。

这是手册上的,varchar(0)应该最大值就是0,你存不进去东西,应该就是一个null,回头我测试下。

下面是mysql手册上写的很详细。

字符串类型的存储需求
列类型    存储需求    
CHAR(M)    M个字节,0 <= M <= 255    
VARCHAR(M)    L+1个字节,其中L <= M 且0 <= M <= 65535(参见下面的注释)    
BINARY(M)    M个字节,0 <= M <= 255    
VARBINARY(M)    L+1个字节,其中L <= M 且0 <= M <= 255    
TINYBLOB, TINYTEXT    L+1个字节,其中L < 28    
BLOB, TEXT    L+2个字节,其中L < 216    
MEDIUMBLOB, MEDIUMTEXT    L+3个字节,其中L < 224    
LONGBLOB, LONGTEXT    L+4个字节,其中L < 232    
ENUM('value1','value2',...)    1或2个字节,取决于枚举值的个数(最多65,535个值)    
SET('value1','value2',...)    1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员)

追问

好的!谢谢~

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网