mysql获取字符串长度length函数和char_length函数的区别

先上结论:

length函数:
计算值的长度-但1个中文会算作长度3,1个数字或者字母-算作长度1;
char_length函数:
计算值的长度-但1个中文或者1个数字或者字母-都算作长度1;

sql结果:

所以:
在统计无中文值的字段值长度时:
length函数和char_length函数效果一样;
有中文值时:
最好使用char_length函数,免得出现误差;

对了还有个用处:
通过length()<>char_length()可以用来检验是否含有中文字符

疑问:为什么length一个中文算作长度3?

查了些资料,发现大家都是只说了结论.但未提及原因;
正好最近也看些字符编码的东西;
所以大胆猜测:
length在统计长度时统计的是字符编码的字节长度;
而char_length函数则是直接统计的字符长度;

而造成大家结果的一致性的原因就是大家使用的都是utf-8编码;
所以:得到的结果就是都是一个中文3个长度;

附:编码的文章链接:
https://blog.csdn.net/weixin_44903702/article/details/110287013

个人猜测未证实,查源码也没找到…  ̄▽ ̄
有大佬知道的,还请指点指点小弟;

本文地址:https://blog.csdn.net/weixin_44903702/article/details/110288287

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐