Home >Database >Mysql Tutorial >MySQL 5.1中varchar类型中文和英文长度的问题

MySQL 5.1中varchar类型中文和英文长度的问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 17:02:211254browse

今天,也是突发奇想,在MySQL上验证varchar(15)会存15个中文,超过的会自动截取前15个。 一直抱守旧的观念(这种观念可能来源与s

今天,也是突发奇想,在MySQL上验证varchar(15)会存15个中文,超过的会自动截取前15个。 一直抱守旧的观念(这种观念可能来源与sql server),varchar类型中,中文占两个字节,因此只能存varchar长度的一半的中文字数。但实际上,在MySQL中不管是中文还是英文,都是长度值,只是数据库”的文章">数据库选择不同字符编码时,varchar最大长度不一样,但同一编码下英文和中文的长度是一样。

MySQL5的文档,,其中对varchar字段类型这样描述:varchar(m) 变长字符串。M 表示最大列长度。M的范围是0到65,535。(VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定,最大有效长度是65,532字节)。

MySQL 5.1遵从标准SQL规范,并且不删除VARCHAR值的尾部空格。VARCHAR保存时用一个字节或两个字节长的前缀+数据。如果VARCHAR列声明的长度大于255,长度前缀是两个字节。

好了,貌似懂了一点。但具体他说的长度大于255时使用2个字节长度前缀,小学减法题:65535 - 2 = 65533啊。不知道这些大牛如何计算的,暂且保留疑问吧?

注:我测试了一下使用UTF8编码,varchar的最大长度为21854字节。

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn