精华内容
下载资源
问答
  • varchar存储字段大小 我从网上搜到的是和mysql的版本有关: 4.0版本以下:varchar(n),指的是n个字节,如果存放UTF8汉字时,只能...我的mysql版本是8.0版本的,应该是可以存储n个汉字,以下是我做的能否存储的测试,...

    varchar存储字段大小

    我从网上搜到的是和mysql的版本有关:
    4.0版本以下:varchar(n),指的是n个字节,如果存放UTF8汉字时,只能存n/3个(每个汉字3字节)。
    5.0版本以上:varchar(n),指的是n个字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放n个。
    我的mysql版本是8.0版本的,应该是可以存储n个汉字,以下是我做的能否存储的测试,以varchar(10)为例

    测试

    1. cmd命令下打开mysqlnet start mysql,登录mysqlmysql -uroot -p,输入密码。
    2. 选择数据库use database;,可以使用show databases;查看都有哪些数据库。
    3. 创建表格,其中设置varchar类型的变量create table var(name varchar(10));
    4. 表格中添加记录insert into var values(' ');添加不同长度的值就可以进行测试了,以下是我的结果,varchar(10)确实可以存储10个汉字
      字段大小测试

    问题

    我很长时间没有在命令提示符中使用mysql了,之前用的是navicat,以下是我在使用cmd遇到的问题

    1. 启动时mysql报错:发生系统错误5,拒绝访问。解决方法,找到cmd.exe文件,右键,以管理员身份运行
    2. 登录时报错:mysql不是内部或外部命令。这个是因为没有配置环境变量,解决方法:配置环境变量即可,将mysql的bin目录路径添加到系统变量path中。
    3. sql语句的问题:我在使用数据库时在数据库名前加了database,结果报错unknown database,还有诸如此类的很多问题,sql的语法要求很严格,一定要保证sql语句的正确.
    展开全文
  • varchar (n):可变长度字符串,长度可以指定为0到65535之间的值(实际上由于字符数大于255后保存字符长度需要2字节,所以长度最大可为65533字节)。 VARCHAR的有效最大长度取决于最大行大小(65535字节,在所有列...

    char (n): 固定长度字符串,n 表示要存储的最大字符数(不是字节),范围( 0 ~ 255 )
    varchar (n):可变长度字符串,长度可以指定为0到65535之间的值(实际上由于字符数大于255后保存字符长度需要2个字节,所以长度最大可为65533字节)。 VARCHAR的有效最大长度取决于最大行大小(65535字节,在所有列之间共享)和所使用的字符集。

    一个汉字占多少长度与编码有关:

    1. UTF-8:一个汉字 = 3个字节,英文是一个字节
    2. GBK: 一个汉字 = 2个字节,英文是一个字节
    3. utf8mb4: 一个汉字 = 4个字节,英文是一个字节
      varchar(n) 表示n个字符,无论汉字和英文,MySql都能存入 n 个字符,仅实际字节长度有所区别。
      MySQL检查长度,可用 SQL 语句 SELECT LENGTH(fieldname) FROM tablename
      在 utf-8 字符集中,最多可以存储(65535 -2) / 3 = 21844 个汉字
      在 gbk 字符集中,最多可以存储(65535 - 2) / 2 = 32766 个汉字
    展开全文
  • 大小为64k,即65535字节,而varchar要用1-2字节来存储字段长度,小于255的1字节,大于255的2字节。  Mysql 5.0后,英文字符固定都是一字节,汉字字符根据编码方式占不同字节,Utf-8占3字节,gbk占了2字节。 ...

    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
      例子如下:
      aaa

       aaa

    GBK编码的varchar

      当编码格式为GBK时,varchar能存多少字符呢?经过推理可知大约能存32766个字符,(65535-2)/2=32766余1。
      那么看看实验结果如下:
     aaa

       aaa

    为何提出这个问题?

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

    总结

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

    VARCHAR的长度标识位

    长度标识位是相对比较复杂的,网上的介绍错的很多,也容易算错。

    其作用是记录数据的字节数

    存储开销是小于255只要1字节、大于255后使用两字节。是因为按照可能的数据大小,分为0 - 255(28)、256 - 65535(216),刚好对应1字节和2字节。

    但要注意,其计算根据的是字段声明的字符长度、计算可能的字节数,再决定长度标志的字节数。如VARCHAR(100),字符集为UTF8,可能的字节数为300,长度标识则为2字节。这是网上介绍错的最多的。

    另外长度标志位只是存储开销,不影响占用声明的字符长度。声明的字符长度的是数据的字符数,允许的最大字符数与字符集有关。

    VARCHAR(1)为例,可以存1个字符,MySQL会额外找一个字节存放长度标识

    https://learn.blog.csdn.net/article/details/103341778 

    展开全文
  • 1. 如果定义为VARCHAR2(32 CHAR),那么该列最多就可以存储32个汉字,如果定义字段为VARCHAR2(32) 或VARCHAR2(32 BYTE)那么它最多可以存储多少个汉字就要视数据库字符集编码决定 *******************...

     

    Oracle 一个中文汉字占用几个字节

    Oracle 一个中文汉字 占用几个字节,要根据Oracle中字符集编码决定!!!

     

    1. 如果定义为VARCHAR2(32 CHAR),那么该列最多就可以存储32个汉字,如果定义字段为VARCHAR2(32) 或VARCHAR2(32 BYTE)那么它最多可以存储多少个汉字就要视数据库字符集编码决定

     ***************************************************************

    2.ORACLE数据库中文可以存储字节或字符,例如 CHAR(32 BYTE) CHAR(32 CHAR)的意义是不同的.一般来说默认是存储字节,你可以查看数据库参数NLS_LENGTH_SEMANTICS的值

     ***************************************************************

    SQL> show parameter nls_length_semantics;

    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    nls_length_semantics string BYTE

     

    select userenv('language') from dual;

     

    SIMPLIFIED CHINESE_CHINA.ZHS16GBK     :   一个汉字占用两个字节

    SIMPLIFIED CHINESE_CHINA.AL32UTF8      :   一个汉字占用三个字节

    ***************************************************************

    3. 求的中文占用多少个字符和多少个字节使用下面的函数.

     

    SQL> SELECT LENGTH('您好') FROM DUAL; --LENGTH函数求得是占用字符数

    LENGTH('您好')
    --------------
    2

    SQL> SELECT LENGTHB('您好') FROM DUAL; --LENGTHB或者VSIZE函数求得是占用字节数

    LENGTHB('您好')
    ---------------
    6

    ***************************************************************

    4.  前台JS验证输入的字符串长度函数

     

            /**
             * yangw
             * 字符串长度的统计--中英文的问题
             */
            
            // 由于Oracle中,一个UTF-8编码的汉字占 3个字节  GBK编码的汉字占两个字节
            // 成都农商行使用到的数据库编码是 AL32UTF8---故下面替换为3个a
               var len= element.value.replace(/[^\x00-\xff]/g,"aaa").length; 
               
            if(len>length){
                showError(element, "的长度必须小于等于"+length+'字节,中文占三个字节,其它占1个字节', hasFrame);
                return false;
            }

     

     

    参考文章: http://www.cnblogs.com/kerrycode/archive/2013/12/10/3466993.html

                   http://www.linuxidc.com/Linux/2013-03/81732.htm

     

    转载于:https://www.cnblogs.com/yangw/p/5364304.html

    展开全文
  • 只适用mysql5.0以上的版本: ...也就是说一个字段定义成 varchar(200),则它可以存储200个汉字或者200个字母。 2. GBK:1character=2bytes,1汉字=1character 也就是说一个字段定义成 varchar(200)...
  • varchar varchar2区别

    2018-12-28 15:15:38
    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 ...
  • varcharvarchar2区别

    2019-12-11 10:22:18
    varcharvarchar2区别 1.varchar2把所有字符都占两字节处理(一般情况下),... 3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 4. var...
  • varchar2与varchar区别

    2019-05-29 15:49:44
    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 ...
  • 1.varchar2把所有字符都占两字节处理(一般情况下),varchar...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,4.大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 VARCHAR2字符要用几个字节...
  • varcharvarchar2

    2013-04-09 21:02:42
    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。
  • varchar2 和varchar区别

    2017-08-16 14:04:00
    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,大部分情况下建议使用varchar2类型,可以保证更好的兼容性。...
  • varcharvarchar2的区别

    2020-08-27 19:23:26
    1.varchar2把所有字符都占两字节处理,varchar只对汉字和全角等字符占两字节,数字,...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 ...
  • varchar2和varchar的区别

    千次阅读 2019-06-14 17:14:31
    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性 ...
  • 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。
  • 1.varchar2把所有字符都占两字节处理(一般情况下),...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 注意: 在oracle中 varchar2的最大长...
  • 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。
  • 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,大部分情况下建议使用varchar2类型,可以保证更好的兼容性。...
  • 1.varchar2把所有字符都占两字节处理(一般...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 rowid 用于定位数据表中某条数据的位置,是
  • 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。
  • char和varchar区别及踩坑 char与varchar2都是Oracle的数据...一个中文占varchar2几个字节要根据Oracle中字符集编码决定: 1.GBK,一个汉字占用两个字节; 2.UTF8,一个汉字占用三个字节; 在项目中就遇到一个坑,通过cha
  • 1.varchar2把所有字符都占两字节处理(一般情况下)...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,大部分情况下建议使用varchar2类型,可以保证更好的兼容性。增删改查:创建表:create table dept1(d...
  • 5535是指能存储的字节数,其实最多只能存储65532个字节,还有3个字节用于存储长度。...text使用额外的2个字节来存储数据的大小,varchar根据存储数据的大小选择用几个字节来存储。text的65535字节全部用来存储数据
  • 1.varchar2把所有字符都占两字节处理(一般情况下),...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 varchar 存放的字符数据最长2000。 v...
  • oracle----varchar2

    2013-09-06 09:48:24
    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,...3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

varchar可以存储几个汉字