Mysql数据库中的字段长度是指字节还是字符?? 是指当前字符集的字符长度

时间:2022-09-23 11:01:55

MySQL 的字符大小和字符集有关,如果字符集是 ascii,保存不了中文(会显示成乱码),如果是 UTF8,每个字符是1-3个字节。

用事实说话

试验用的 MySQL 5.6

先检查数据库字符集

show variables like '%char%';

结果:UTF8

Variable_name Value
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8
character_set_system utf8
character_sets_dir D:\Program Files\MySQL\MySQL Server 5.6\share\charsets\

创建表(注意:varchar(10)

CREATE TABLE `test_char` (    `s` VARCHAR(10) NULL DEFAULT NULL)

插入数据

十字ASCII字符,正确执行

insert into test_char(s)values('0123456789');

十个中文字符,正确执行

insert into test_char(s)values('一二三四五六七八九十');

但是十一个ASCII或中文都是报错,说数据太长。

结论

长度是当前字符集的字符长度,而不是字节长度!