刚遇到这个问题纠结于是指字节还是字符,然后中文又占几个字节......
后来在网上查到了用事实说话的例子:
来源:https://segmentfault.com/q/1010000003040054
现引用如下:
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或中文都是报错,说数据太长。
结论
长度是当前字符集的字符长度,而不是字节长度!
Mysql数据库中的字段长度是指字节还是字符
最新推荐文章于 2024-04-19 13:36:26 发布