• 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)
    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个汉字

    参考

  • 相关阅读:
    SPOJ1007 VLATTICE
    hdu 4746Mophues[莫比乌斯反演]
    [Offer收割]编程练习赛13 B.最大子矩阵[枚举]
    [SCOI2011]飞镖[数学模拟]
    2333: [SCOI2011]棘手的操作[离线线段树]
    hdu3507 Print Article[斜率优化dp入门题]
    react 日期
    使用arc进行code review
    css冲突2 要关闭的css在项目代码以外,但是是通过<link>标签引入的css(例如bootstrap):解决方法,在APP.css中使用全局样式
    <svg>标签
  • 原文地址:https://www.cnblogs.com/cdfive2018/p/15204958.html
Copyright © 2020-2023  润新知