MySQL中 char_length 函数与 length 函数都可以返回字符串的长度
mysql> select length('MySQL'), char_length('MySQL'); +-----------------+----------------------+ | length('MySQL') | char_length('MySQL') | +-----------------+----------------------+ | 5 | 5 | +-----------------+----------------------+ 1 row in set (0.01 sec)
两个函数的功能:
-
LENGTH() 返回以字节为单位的字符串的长度。
-
CHAR_LENGTH() 返回以字符为单位的字符串的长度。
由上面的例子来看,“MySQL”共5个字符,每个字符应该是占1个字节。
而中文不一样,一般一个汉字占2-3个字节。如:
GBK字符集编码下:
select char_length(‘中国’); // 2个字符 select length(‘中国’); // 4个字节,一个汉字2个字节 select bit_length(‘中国’); // 32位。4*8 = 32
UTF8字符集编码下:
select char_length(‘中国’);// 2个字符 select length(‘中国’); // 6个字节,一个汉字3个字节 select bit_length(‘中国’); // 48位。6*8 = 48
总结
char_length(str)
-
长度的单位为字符,一个多字节字符算作一个单字符
-
不管汉字还是数字或者是字母都算是一个字符
length(str)
-
utf8编码下,一个汉字算三个字符,一个数字或字母算一个字符。
-
其他编码下,一个汉字算两个字符, 一个数字或字母算一个字符。