zoukankan      html  css  js  c++  java
  • mysql 数据库varchar存储汉字

    具体还是要看版本的

    4.0版本以下,varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉字3字节) 

    5.0版本以上,varchar(100),指的是100字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放100个。

    自己在数据库中建个表测试下可以放多少个汉字。

    示例:以5.0以上版本为例。

    新建表:

    CREATE TABLE varchar_test (
    `id` int(11) NOT NULL ,
    `string` varchar(20)
    ) ENGINE=InnoDB
    DEFAULT CHARACTER SET=utf8COLLATE=utf8_general_ci

    插入表

    INSERT INTO varchar_test (id, string)
    VALUES (1, '一二三四五六七八九十');
    INSERT INTO varchar_test (id, string)
    VALUES (2, '一二三四五六七八九十一二三四五六七八九十');
    INSERT INTO varchar_test (id, string)
    VALUES (3, '12345678901234567890');

    测试结果:

    1:一二三四五六七八九十

    2:一二三四五六七八九十一二三四五六七八九十

    3:12345678901234567890

    如果插入字符超过21个,则报错

    INSERT INTO varchar_test (id, string)
    VALUES (3, '123456789012345678901');

    [Err] 1406 - Data too long for column'string' at row 1

    可见MySQL的varchar(n)可以存储的中文字符数和英文字符数是一致的,都是n个字符


    但是在公司的mysql上插入12个字符却没有报错,而是自动截取了十个字符,说明对mysql做了插入截取配置

  • 相关阅读:
    HihoCoder1371
    Intern Day23
    腾讯移动客户端开发暑期实习一面笔试
    C++
    朱丹为什么是文艺青年
    金数据一个不错的调查平台
    单反手动对焦M档,AV,TV,P,A,A-DEP
    chrome不支持字体12px
    火狐解决字体模糊
    《程序员的自我修养》阅读笔记(四):
  • 原文地址:https://www.cnblogs.com/AlanWilliamWalker/p/11270992.html
Copyright © 2011-2022 走看看