(注:以下针对mysql 5.0以上版本)
mysql varchar(n) n表示字符个数,不是字节数。
对于utf8编码,无论是字符、数字、汉字均占3字节。varchar最大长度为65535个字节,最大可存储汉字数 = (65535-1-2)/3
减1是因为实际存储从第2个字节开始
减2是因为要在列表长度存储实际字符长度
除3是因为utf8编码限制。
例:1.验证varchar(n)表示汉字
CREATE TABLE `t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
例:2. n表示字符,那么varchar(n)中n的最大值应该为:
n = (65535-1-2-4)/3=21842.67 = 21843
减1和减2与上例相同;
减4的原因是int类型的id占4个字节;
编码是utf8。