精华内容
下载资源
问答
  • 动手测试之:新建表:CREATE TABLE varchar_test (`id`int(11) NOT NULL ,`string`varchar(20)) ENGINE=InnoDBDEFAULT CHARACTER SET=utf8COLLATE=utf8_general_ci插入表INSERT INTO varchar_test (id, string)...

    动手测试之:

    新建表:

    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个,则报错

    [SQL]

    INSERT INTO varchar_test (id, string)

    VALUES (3, '123456789012345678901');

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

    小结:

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

    展开全文
  • utf8编码的varcharMysql记录行数据是有限的。大小为64k,即65535字节,而varchar要用1-2字节来存储字段长度,小于255的1字节,...第一,当编码方式为utf-8时,varchar存到21845就存不下了.也就是最大长度是21844....

    utf8编码的varchar

    Mysql记录行数据是有限的。大小为64k,即65535个字节,而varchar要用1-2字节来存储字段长度,小于255的1字节,大于255的2字节。

    Mysql 5.0后,英文字符固定都是一个字节,汉字字符根据编码方式占不同字节,Utf-8占3个字节,gbk占了2个字节。

    第一,当编码方式为utf-8时,varchar存到21845就存不下了.也就是最大长度是21844.根据上面信息可以推算出 ( 65535-2 )/3=21844余1

    例子如下:

    ba7bafda5e07073e06f69564f027f5da.png

    9fc4f82a381964cf7b95e2c08a523dcf.png

    GBK编码的varchar

    当编码格式为GBK时,varchar能存多少字符呢?经过推理可知大约能存32766个字符,(65535-2)/2=32766余1。

    那么看看实验结果如下:

    e637c4b7e90226e7eb9eef76360dca52.png

    2b4397794de8bd1fbc8f9ffe42d0037f.png

    为何提出这个问题?

    前段时间一个哥们提bug,要把备注等字段全部最大大小设置为1000,甚至更多,这个表的字段本身就已经很多了,而我们设计表时一般都默认使用utf8这个编码格式,那么一个汉字就占了3个字节,故一个行记录的长度就会短了些,数据占用存储资源也会多了些,然后修改的时候成功的报了row size too large的这个错误。这里提出来也是为了让大家注意下。

    总结

    设计表的时候不同的编码格式会导致varchar的最大值发生变化,varchar(数值),这个数值指的是字符数,也可以说是一个字,但是不是字节,当然存储的数据还是一个英文占一个字节,一个汉字根据编码格式占不同字节。

    展开全文
  • 输出为 250 255 307 如果某个字段属性为varchar(249)那么第一个字符入库就会报错,如果varchar(254)的话第一个字符串存入就会报错。可以看出不管是数字还是字符串是按照单个字符来做基本单位的,只要一个字符就...

    System.out.println("123123123123阿萨德发的发生123123123123123阿萨德发的发生123123123123阿萨德发的发生123123123123123123123123阿萨德发的发生123123123123阿萨德发的发生123123123123123123123阿萨德发的发生12312123123123123阿萨德发的发生123123123123阿萨德发的发生1231231231233123123123123123123阿萨德发的发生123123123123阿萨德发的发生123123123123".length());

    System.out.println("123123123123阿萨德发的发生123123123123123阿萨德发的发生123123123123阿萨德发的发生123123123123123123123123阿萨德发的发生123123123123阿萨德发的发生123123123123123123123阿萨德发的发生12312123123123123阿萨德发的发生123123123123阿萨德发的发生1231231231233123123123123123123阿萨德发的发生123123123123阿萨德发的发1生1123112311231213".length());

    System.out.println("123123123123阿萨德发的发生123123123123123阿萨德发的发生123123123123阿萨德发的发生123123123123123123123123阿萨德发的发生123123123123阿萨德发的发生123123123123123123123阿萨德发的发生12312123123123123阿萨德发的发生123123123123阿萨德发的发生1231231231233123123123123123123阿萨德发的发生123123123123阿萨德发的发1生11231123111111111111111111111111111111111111111112123123123123312113".length());

    输出为

    250

    255

    307

    如果某个字段属性为varchar(249)那么第一个字符串存入库就会报错,如果varchar(254)的话第一个字符串存入就会报错。可以看出不管是数字还是字符串是按照单个字符来做基本单位的,只要一个字符就占一个长度,varchar(x)里的x就是你存入字符串的长度。

    但是如果你用utf8存入"你好"实际会占用3*2个字节,因为mysql对utf8字符占用3字节,gbk占用2字节,当然数字还是占用1字节

    写本文时参考了这篇文章:

    展开全文
  • 在 MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532字节的数据,起始位和结束位占去了3字 节,也就是说,在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放...

    1.varchar类型的变化

    MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定)。在 MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去了3个字 节,也就是说,在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以使用可变长的varchar来存放,这样就能有效的减少数据库文 件的大小。

    MySQL 数据库的varchar类型在4.1以下的版本中,nvarchar(存储的是Unicode数据类型的字符)不管是一个字符还是一个汉字,都存为2个字节 ,一般用作中文或者其他语言输入,这样不容易乱码 ;varchar: 汉字是2个字节,其他字符存为1个字节 ,varchar适合输入英文和数字。

    4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) ;5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 ;varchar(20)在Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同,具体有以下规则:

    a) 存储限制

    varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。

    b) 编码长度限制

    字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过

    展开全文
  • 标题:MYSQL字段的长度varchar类型能存多少个中文字符 MySQL | ver < 4.1: VARCHAR以字节为单位存储,所以假设全部为常用汉字(UTF-8 3字节编码长度),则VARCHAR(255)共可存放约85汉字; MySQL | ver >= ...
  • 一、关于 UTF-8UTF-8 Unicode Transformation Format-8bit。是用以解决国际上字符的一种多字节编码。...UTF-8编码的文字可以在各国支持 UTF8 字符集额的浏览器上显示。如果是UTF8编码,则在外国人的英文 IE 也能...
  • varchar(n)中的数字在5.0以下的版本表示字节,在5.0以上表示字符例子:varchar(100),在5.0以下表示存储100字节,5.0以上表示存储100个字符;所以5.0以上的就不用说啦,你在定义类型的时候,用作标题还是小文本,...
  • 一、关于UTF-8 UTF-8 Unicode Transformation Format-8bit。是用以解决国际上字符的一种多字节编码。... UTF-8编码的文字可以在各国支持UTF8字符集额的浏览器上显示。 如果是UTF8编码,则在外国人的英文IE...
  • 展开全部4.0版本以下,varchar(50),指的是50字节,如果存放UTF8汉字时,只能16(每汉字3字节) 5.0版本以上32313133353236313431303231363533e59b9ee7ad9431333365643662,varchar(50),指的是50字符,无论存放...
  • 5.0 版本以上,varchar(100),指的是100字符,无论存放的是数字、字母还是UTF8汉字(每汉字3字节),都可以存放100。 注:借阅文章地址:https://zhidao.baidu.com/usercenter?uid=a7e74069236f25705e79c662&...
  • 1.存储单位MySQL在5版本以后,varchar(45),指的是45个字符可以存放45汉字,或者45英文字母(一UTF8汉字和一英文字母一样,都占用1个字符)。MySQL在4版本以前,varchar(45),指的是45字节,可以存放15...
  • VarChar能存储多少个

    2020-12-18 10:00:31
    参考链接:MySQL 数据库 varchar 到底可以存多少个汉字,多少个英文 首先我们需要了解utf-8和GBK的区别,因为不同的编码格所占的字节数是不同的 中文 英文 utf-8 1~3字节 1字节 GBK 2字节 1字节 ...
  • 场景介绍: ...1,varchar(100)能存多少个汉字? 具体还是要看版本的,一个字符占用3字节 ,一汉字(包括数字)占用3字节=一个字符 (1)MySQL 4.0版本以下 varchar(100),指的是100字节,如果存放
  • 一、length(str) 和 char_length(str) 的区别1、length(str)返回字符串 str 的长度,单位为字节。...这意味着对于一包含52字节字符字符串,length()的返回值是 10,而 char_length() 的返回值则为 5。二...
  • 1、varchar(5)可以存储多少个汉字,多少个字母数字?相信有好多人应该跟我一样,对这已经很熟悉了,根据经验我们能很快的做出决定,比如说用varchar(200)去存储url等等,但是,即使你用了很多次也很熟悉了,也有...
  • 这事情主要还是看 数据库字符集 ...如果是 latin1 的话 ... 计算字节长度 ... greatghoul 的答案是对的 ...如果是 utf-8 的话 ... 计算字符长度 ... joyeu 的答案是对的 ...至于 Theo 的答案里说的 4.1 为临界点的...
  • varchar类型可以存储多少个汉字,多少个数字,是要具体看我们的mysql版本 如下: 4.0版本以下,比如 varchar(100),指的是100字节,如果存放UTF8汉字时,只能33(每汉字3字节) 5.0版本以上,比如varchar(100)...
  • 你好,我是李辉。这是专栏的第一篇文章,在专栏的前几小节,我会先和你先聊一聊 MySQL 的数据...这一小节我们就先来说说在数据建模设计时使用非常频繁的字符串类型 – VARCHAR。为了在阅读时不引起歧义,本专栏...
  • 2、varchar存多少汉字、数字? 3、varchar的最大长度是多少呢? 4、字符、字节、位,之间的关系? 5、mysql字段类型存储需要多少字节? 接下来请仔细看,整理不易啊。 1、varchar(100)和varchar(10)的区别在...
  • 1.前几天往数据库表里面插入数据的报了一这样的错误如下:SQL> insert into student values('中华人民共和',60);insert into student values('中华人民共和',60)*第 1 行出现错误:ORA-12899: 列 "SYSTEM"....
  • CREATE TABLE `test` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`content` varchar(5) NOT NULL DEFAULT '',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COLLATE=utf8_general...
  • 一.关于UTF-8UTF-8 Unicode Transformation Format-8bit。是用以解决国际上字符的一种多...UTF-8编码的文字可以在各国支持UTF8字符集额的浏览器上显示。如果是UTF8编码,则在外国人的英文IE也能显示中文,他们无需...
  • UTF8编码:一汉字 = 3字节,英文是一字节GBK编码: 一汉字 = 2字节,英文是一字节在UTF8状态下langtext: 4294967295/3=1431655765汉字,约14亿,存储空间占用:4294967295/1024/1024/1024=4G的数据;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 120,373
精华内容 48,149
关键字:

varchar可以存多少个字符