MySQL 获取字符串长度的常用函数有char_lengthlengthbit_length,它们针对不同的字符编码的处理方式不一样。

总的来说:

  • char_length 显示的字符个数;
  • length 字符串在当前编码下存储,所占的字节数。
  • bit_length 字符串在当前编码下存储,所占的bit数,也就是length*8

GBK 编码

1
2
3
4
select char_length('中国');  -- 2
select length('中国'); -- 4
select length('china'); -- 5
select bit_length('中国'); -- 32

UTF-8 编码

1
2
3
4
select char_length('中国'); -- 2
select length('中国'); -- 6
select length('china'); -- 5
select bit_length('中国'); -- 48