MySQL中CHAR()的相关疑问

学着学着有点乱~百度了好多答案,也是乱七八糟的各说各个的,越来越乱。。

就来问问这几个问题,求解答
1、char(M) 中的M是代表字符数,还是字节数?

2、定义 CREATE TABLE test_char1( c1 CHAR(5) ) ; 之后

那 INSERT INTO test_char1(c1) VALUES ('hello'); 跟
INSERT INTO test_char1(c1) VALUES ('一二三四五'); 是一样的吗?都能存储进去。

可当VALUES ('helloo')时就报错了~~这是把英文字也当成字符来算了?

我直接 贴官方文档
https://dev.mysql.com/doc/refman/8.0/en/char.html
The CHAR and VARCHAR types are declared with a length that indicates the maximum number of characters you want to store. For example, CHAR(30) can hold up to 30 characters.

M代表的是字符数,占多少个字节还要看是采用的什么字符集。比如 char(4) 如果字符集是utf8mb4的话。 则是4*4 占16字节。

对不起,我错了,好像是字符

这个是和mysql版本有关,mysql5以后含5,char(M)都是按照字符数进行统计.
两个都能插入

img


查过5个字符就会报错:

img

如果mysql版本是5以前,官方给出的说法是按照字节数来算,5以前版本的应该很少了.
如有帮助,欢迎采纳!

1.字符
2.char(5)不行,char(10)可存五个中文字,nvarchar(5)也是五个中文。