开发者社区> 问答> 正文

mysql中varchar(M),M的最大值问题

mysql中varchar(M),M的最大值问题
1.mysql每行不能超过65535字节
2.如果某列允许为null,则实际存储最大值为65535-1字节
3.varchar类型所占的最大字节取决于其它列所占的字节,需要65535减去这些
4.varchar本身需要1-2个字节来记录该列的内容长度,超过255个字符需要2个字节
utf8编码下,一般一个汉字占3个字节,英文一个字节,韩语似乎是1个字节,日语似乎也是3个字节
假设,只有一个varchar类型的列,且不允许为null
varchar(M)中的M,为什么不能超过 (65535-2)/3
M是所代表的字符数
mysql怎么就知道你一定存中文呢?
还是说mysql规定:只要是utf8,就按这个公式(确切的说是方式)去计算呢

展开
收起
蛮大人123 2016-02-06 22:10:51 2702 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    在MySQL 5.0之前,M代表字节数,而之后的版本代表字符数,所以这里有点历史遗留问题。也就是为什么会别扭的要用公式去算。

    2019-07-17 18:38:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像