欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-27 13:58:03
先上结论:length函数:计算值的长度-但1个中文会算作长度3,1个数字或者字母-算作长度1;char_length函数:计算值的长度-但1个中文或者1个数字或者字母-都算作长度1;sql结果:所以:在统计无中文值的字段值长度时:length函数和char_length函数效果一样;有中文值时:最好使用char_length函数,免得出现误差;......

先上结论:

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

sql结果:
mysql获取字符串长度length函数和char_length函数的区别
所以:
在统计无中文值的字段值长度时:
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