MySQL中的字符统计函数
MySQL中统计字符串中字符个数的两个函数:
- char_length(
column_name):计算单位是字符,不管是汉字还是字母都算是一个字符,例如:
select char_length('abcd1234你好')
-- 结果为:
10
- length(
column_name):
对于length(column_name)就比较特殊,它的计算单位是字节,例如使用utf8编码时,一个汉字为三个字节,一个数字或者一个字母为一个字节;使用gbk编码时,一个汉字为两个字节,一个数字或一个字母为一个字节,例如:
select length('你好abcd1234');
-- 结果为:
14
这里有一个小技巧,我们可以根据char_length(str)和length(str)是否相等来判断某个字段值是否包含非数字字母的其他值,例如中文值等,这是一个小技巧!
这里再给一个扩展:
在MySQL5.0.3版本前后,varchar类型大小的计算方式发生了变化,在5.0.3版本之前,varchar的计算方式为varchar(length(str)),在5.0.3版本之后,varchar的计算方式变成了varchar(char_length(str))。
如在5.0.3版本之前,如果使用utf8编码,varchar(20)最多只能存6个汉字;
在5.0.3版本之后,如果使用utf8编码,varchar(20)最多可以存20个汉字。

浙公网安备 33010602011771号