MySQL的varchar(10)能存多少个汉字问题
MySQL的varchar(10)能存多少个汉字?
如果是数字或英⽂,可以存10个,如果是汉字呢,能存多少个?
实践
查看MySQL版本号:
select version();
select @@version;
本机MySQL版本为5.6.16。
创建测试表:
create table test_table (
id bigint(20) not null,
product_code varchar(10) not null,
primary key (id)
) engine=innodb default charset=utf8mb4;
先⽤数字来测试下,写⼊10个数字:
insert into test_table(id,product_code) values(1,'1234567890');
写⼊成功,查询数据:
select id,product_code,length(product_code), char_length(product_code) from test_table;
查询结果:
id product_code length(product_code)char_length(product_code)
112345678901010
其中,length()返回的字节数为10,char_length()返回的字符数也为10。
写⼊11个数字试试:
insert into test_table(id,product_code) values(2,'12345678901');
写⼊报错,错误提⽰为:
[22001][1406]Data truncation: Data too long for column 'product_code' at row ...
因为超过10个数字了,因此写⼊失败。
接下⾥⽤汉字试试,写⼊10个汉字:
insert into test_table(id,product_code) values(3,'天青⾊等烟⾬⽽我在等');
写⼊成功,查询数据:
select id,product_code,length(product_code), char_length(product_code) from test_table;
查询结果:
id product_code length(product_code)char_length(product_code)
112345678901010
3天青⾊等烟⾬⽽我在等3010
其中,汉字的length()返回的字节数是30,char_length()返回的字符数为10,
可见,1个汉字占3个字节,MySQL把汉字当作字符处理,varchar(10)可存储的汉字数为10。
写⼊11个汉字试试:
insert into test_table(id,product_code) values(4,'天青⾊等烟⾬⽽我在等你');
写⼊报错,错误提⽰为:
[22001][1406]Data truncation: Data too long for column 'product_code' at row ...
1个汉字占1个字符,11个汉字超过10个字符,因此写⼊失败。字符串长度255是多少个汉字
总结
当MySQL版本为5.6时:
varchar(10)表⽰存储的字符数为10,1个汉字占1个字符(3个字节)
varchar(10)可存储10个汉字
参考
mysql varchar(50)到底能存多少个汉字
⼀篇⽂章看懂mysql中varchar能存多少汉字、数字,以及varchar(100)和varchar(10)的区别
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论