Char 和 Varchar 的共同点和不同点?

CHAR 是固定长度的字符类型

VARCHAR 则是可变长度的字符类型
共同点

CHAR(M) 和 VARCHAR(M) 都表示该列能存储 M 个字符,注意不是字节!!

不同点

CHAR: 最多可以存储 255 个字符(不是字节),字符有不同的编码集,比如 UTF8 编码 (中文占3字节)、GBK 编码 (中文占2字节) 等。
对于 CHAR(M) 如果实际存储的数据长度小于M,则 MySQL 会自动会用空格字符补充,但是在检索操作中那些填补出来的空格会被去掉。

VARCHAR :最大长度为 65535 个字节。VARCHAR 存储的是实际的字符串加1或2个字节用来记录字符串实际长度,字符串长度小于等于255字节用1字节记录,超过255就需要2字节记录。

VARCHAR(50) 能存放几个UTF8 编码的汉字?

存放的汉字个数与版本相关。

mysql 5.0以上版本,varchar(50) 指的是 50 字符,无论存放的是数字、字母还是 UTF8 编码的汉字,都可以存放 50 个。

mysql 4.0以下版本,varchar(50) 指的是 50 字节,如果存放 UTF8 格式编码的汉字时(每个汉字3字节),只能存放16 个。

猜你喜欢

转载自blog.csdn.net/weixin_45037357/article/details/108266428