mysql中cahr(20)、varchar(20)中定义的长度到底是字符长度还是字节长度?

转载来源:https://blog.csdn.net/xiaoyu19910321/article/details/52325090

1.我们经常 mysql创建 varchar(20)  name这个 20长度 究竟是表示的字符数还是字节数?根编码字符集又有没有关系?

首先 mysql 5.X 以上的版本的 定义中 表示的字符长度,如上:varchar(20)你既可以添加20个英文字符,也可以添加二十个中文字符即表示的是字符长度。

mysql 4.X 的版本表示的是字节长度,会根据字符集转变 内容字节长度存储。

对于char(10)同上。

2.关于 int(2) 中的2  ,表示的并非是int类型只能输入2位数字,而是只能显示2位数字范围,可以添加11位的int的任何数字。

3.mysql 5.X以上版本  存储时 char最大255字节,这个和字符集是否有关系

本人测试没有关系,字符集是GBK或者UTF-8在char(255)下都可已添加255个字符(字母或者汉字或者都有)。
但是对于varchar类型:

参考:https://blog.csdn.net/guanmaoning/article/details/106663446

utf-8状态下,汉字最多可以存 21844个字符串, 英文也为 21844个字符串 (虽然一个英文字符实际占用一个字节,但是utf-8定义字段时是默认以每个字符最大为3个字节来进行计算的,所以最大为varchar(21844))。

gbk状态下,汉字最多可以存 32766个字符串,英文也为 32766个字符串(虽然一个英文字符实际占用一个字节,但是gbk定义字段时是默认以每个字符最大为2个字节来进行计算的,所以最大为varchar(32766))。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值