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做了插入截取配置

  • 相关阅读:
    Scrapy
    关于函数名称和库函数名称冲突的故事
    Hibernate的一级缓存
    spring-mvc 与 openid4java
    openid4java 使用记录[转载]
    Linux定时任务Crontab详解_定时备份
    Spring的线程池ThreadPoolTaskExecutor使用案例
    BZOJ4275 : [ONTAK2015]Badania naukowe
    BZOJ4137 : [FJOI2015]火星商店问题
    BZOJ2832 : 宅男小C
  • 原文地址:https://www.cnblogs.com/AlanWilliamWalker/p/11270992.html
Copyright © 2011-2022 走看看