首页 新闻 会员 周边 捐助

在carchar中最大长度不超过255个字节,为什么有的表中设置varchar(800)

0
悬赏园豆:5 [待解决问题]
 在carchar中最大长度不超过255个字节,为什么有的表中设置varchar(800)
我忒忙的主页 我忒忙 | 初学一级 | 园豆:28
提问于:2016-06-12 10:38
< >
分享
所有回答(1)
0

就中文汉字来说,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,我是这么算的, 虽然最后差1-2个字节,不过不用这么在意吧?除非你有强迫症。呵呵!

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

解决你的问题应该没难度了,char最大才是255个字符,不论什么编码。
varchar(255),能存放多少还要看这个表中其他字段占掉多少的长度,和编码格式,才能算出来,我上面已经给出算法过程了。你慢慢理解。

[3] | 园豆:1174 (小虾三级) | 2016-06-12 14:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册