【mysql中的设置varchar长度问题...如果某一项中-查字典问答网
分类选择

来自胡麒的问题

  【mysql中的设置varchar长度问题...如果某一项中设置的是varchar(50)那么对英文当然是50那么对中文呢utf-8的中文占3个字节那么,这个varchar(50)是不是只能存16个汉字了?】

  mysql中的设置varchar长度问题...

  如果某一项中设置的是varchar(50)

  那么对英文当然是50

  那么对中文呢

  utf-8的中文占3个字节

  那么,这个varchar(50)是不是只能存16个汉字了?

1回答
2020-05-22 23:48
我要回答
请先登录
陈俊亮

  mysqlvarchar(50)不管中文还是英文都是存50个的

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

  为何会这般变换?真是感觉MySQL的手册做的太不友好了,因为你要仔细的继续往下读才会发现这段描述:MySQL5.1遵从标准SQL规范,并且不删除VARCHAR值的尾部空格。VARCHAR保存时用一个字节或两个字节长的前缀+数据。如果VARCHAR列声明的长度大于255,长度前缀是两个字节。

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

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

  在mysql5.0.45版本,数据库编码utf8下进行测试:varchar最长定义为21785。也就是说不论字母、数字、汉字,只能放21785个。

  推想:varchar字节最大65535,utf8编码一个字符3个字节65535/3=21785。

2020-05-22 23:49:43

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •