MySQL – length()vs char_length()
 length()和char_length()之间的主要区别是什么? 
我相信这与二进制和非二进制string有关。 是否有任何实际的理由将string存储为二进制?
 mysql> select length('MySQL'), char_length('MySQL'); +-----------------+----------------------+ | length('MySQL') | char_length('MySQL') | +-----------------+----------------------+ | 5 | 5 | +-----------------+----------------------+ 1 row in set (0.01 sec) 
	
  LENGTH()返回以字节为单位的string长度。 
  CHAR_LENGTH()返回string的长度。 
这与Unicode特别相关,其中大多数字符以两个字节编码。 或UTF-8,其中的字节数变化。 例如:
 select length(_utf8 '€'), char_length(_utf8 '€') --> 3, 1 
 正如你所看到的,欧元符号占用3个字节(UTF-8编码为0xE282AC ),即使它只有一个字符。 
varchar(10)将存储10个字符,可能超过10个字节。 在索引中,它将分配字段的最大长度 – 所以如果您使用的是UTF8-mb4,则会为10个字符字段分配40个字节。