ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL的varchar(10)能存多少个汉字

2021-08-30 22:31:27  阅读:435  来源: 互联网

标签:10 product code varchar 能存 汉字 length


问题

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)
1 1234567890 10 10

其中,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)
1 1234567890 10 10
3 天青色等烟雨而我在等 30 10

其中,汉字的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个字符,因此写入失败。

总结

当MySQL版本为5.6时:

  • varchar(10)表示存储的字符数为10,1个汉字占1个字符(3个字节)
  • varchar(10)可存储10个汉字

参考

标签:10,product,code,varchar,能存,汉字,length
来源: https://www.cnblogs.com/cdfive2018/p/15204958.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有