Welcome 微信登录

首页 / 数据库 / MySQL / MySQL 5.1中varchar类型中文和英文长度的问题

今天,也是突发奇想,在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字节。重新编译MySQL后phpMyAdmin报#2002错误MySQL中时间类型的比较datediff相关资讯      MySQL教程 
  • 30分钟带你快速入门MySQL教程  (02月03日)
  • MySQL教程:关于I/O内存方面的一些  (01月24日)
  • CentOS上开启MySQL远程访问权限  (01/29/2013 10:58:40)
  • MySQL教程:关于checkpoint机制  (01月24日)
  • MySQL::Sandbox  (04/14/2013 08:03:38)
  • 生产环境MySQL 5.5.x单机多实例配  (11/02/2012 21:02:36)
本文评论 查看全部评论 (0)
表情: 姓名: 字数