mysql计算字节数_Mysql varchar 数字计算方法 - 个数计算?2字节?3字节?4字节?编码格式决定一切啊!...

Mysql varchar的数字计算方法

SELECT char_length('中文');

SELECT length('中文');

个数计算?字节计算?

2字节?3字节?4字节?编码格式决定一切啊!

简单的事情为什么那么复杂?装逼写算法计算数目搞得高大上?其实很简单,只是你不懂原理!

同样1个字符,可以演变出1个字节、2个字节、3个字节、4个字节,试问,你不变的算法如何正确针对可变的编码?

Mysql varchar 1个字符在不同编码下的字节数目是不同的

a745213cc4bbe2646617a27e795108c9.png

6fe665a796cbf2f77a0786d2f2a8e23b.png

95448fb2fe78ea30c53f92d2d701f614.png

17d65e3dee8bb71e7803e8bfb0a4b8ba.png

Mysql varchar的数字意义是:任何编码下都是按照个数计算的

3c089a7ec425857ca3cb6bfd10e50a3e.png

753b6c2fbc4cdd8e2c7520781bdf46cf.png

Mysql varchar 到底是字节还是个数?

varchar(10),char(10)

可以肯定的是,最多包含10个字符(东西)

具体是多少字节,要看字符类型和编码规则而定!

如何解决varchar字符数目长度判断或者限制?

根据上面的,我们可以从计算个数的理论上来限制即可!

a-z,A-Z,0-9,半角标点符号 都是1个(这个大家都知道)

汉字、全角字符、法语、Emoji表情符号。。。等一切都视为1个(聪明的同学已经知道解决方法了)

最终答案:

if(mb_strlen($name, 'UTF-8') > 10){

exit('超过数据库最大长度varchar(10)');

}

var_dump(mb_strlen('a', 'UTF-8'));//1个

var_dump(mb_strlen('A', 'UTF-8'));//1个

var_dump(mb_strlen('8', 'UTF-8'));//1个

var_dump(mb_strlen('我', 'UTF-8'));//1个

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值