mysql varchar 长度问题

我设置了50长度
图片说明

但是为什么却能装下87长度

图片说明

mysql5.0版本以上,varchar指定的长度是字符个数,而不是字节数。而不同的字符(英文,数字,汉子)占用的字节数各不相同,
函数length返回的是计算得到的字节数,而不是字符个数。
举个例子select LENGTH('abc中国'),返回值为9,因为在本人mysql采用utf8编码情况下,abc占用3个字节,中国占用6个字节(每个汉子3个字节)

对于包含5个2字节字符的字符串(比如说“黑龙江北部”),LENGTH()返回10,而CHAR_LENGTH() 返回5。
你可以试试看CHAR_LENGTH(),返回应该没有>50的

length是判断字段值的字节长度,按编码格式,UTF-8 一个汉字为3个字节;GBK 一个汉字为2个字节。

mysql5.0版本以上varchar(50)指的是50字符,汉字都可以存50个,最大length应该能达到150字节。