精华内容
下载资源
问答
  • MySQL中varchar占字节大小是多少

    千次阅读 2020-05-10 15:56:59
    VARCHAR(M) L+1个字节,其中L <= M 且0 <= M <= 65535 参考链接: https://blog.csdn.net/free_ant/article/details/52936722
    VARCHAR(M)

    L+1个字节,其中L <= M 且0 <= M <= 65535

    参考链接:

    https://blog.csdn.net/free_ant/article/details/52936722

    展开全文
  • Mysql 5.0后,英文字符固定都是一个字节,汉字字符根据编码方式不同字节,Utf-83个字节,gbk了2个字节。第一,当编码方式为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(数值),这个数值指的是字符数,也可以说是一个字,但是不是字节,当然存储的数据还是一个英文占一个字节,一个汉字根据编码格式占不同字节。

    展开全文
  • 这几天在写接口校验,碰到个有意思的事,前端开发人员问我某个字段的长度控制在多少? 我查了查数据库,发现是varchar(100),于是就说数据库字段限制100,汉字咱们限制50吧。 每个汉字2个字节,100/2=50,看起来...

    这几天在写接口校验,碰到个有意思的事,前端开发人员问我某个字段的长度控制在多少?

    我查了查数据库,发现是varchar(100),于是就说数据库字段限制100,汉字咱们限制50吧。

    每个汉字占2个字节,100/2=50,看起来没什么问题。

    这时旁边另一个开发说不对,有的偏僻字占3个字节。。。这就很尴尬了,这长度校验咋写?

    于是我上网查了查,发现原来我们都理解的不对

    MySQL中varchar(100)中的100指的是字符数,不是字节数。也就是说,varchar(100)能输入100个英文,100个汉字,我实际测试了下,上面的说法是正确的。不管是汉字,英文,字符,数字,都能输入100,超过100会报错。

    也就是说,MySQL中varchar(x)中的x指的是字符数,不是字节数。至于每个字符占多少字节要看编码格式。

    UTF-8编码中,每个汉字占3个字节,英文字母1个字节。

    转自:MySQL中汉字占多少字节?varchar(x)中的x如何理解?

    展开全文
  • Oracle 一个中文汉字 占用几个字节,要根据Oracle中字符集编码决定 查看oracle server端字符集   select userenv('language') from dual;   如果显示SIMPLIFIED CHINESE_CHINA.ZHS16GBK,一个汉字占用两个字节...

    Oracle 一个中文汉字 占用几个字节,要根据Oracle中字符集编码决定 查看oracle server端字符集

     

    select userenv('language') from dual;

     

    如果显示SIMPLIFIED CHINESE_CHINA.ZHS16GBK,一个汉字占用两个字节;
    如果显示SIMPLIFIED CHINESE_CHINA.AL32UTF8,一个汉字占用三个字节.

    可以用以下语句查询一个汉字占用的字节长度

     

    select lengthb('你') from dual;//返回2,表示2个字节
    
    select length('你') from dual;//返回1,表示1个字符
     
     
    字符串类型字段默认的长度是以字节为单位的,具体取决于参数nls_length_semantics 的值(使用show
    parameters可以看到这个参数的值),默认是BYTE,也就是以字节为单位的,如果是CHAR则是以字符为单位的。
     
    表的某列可以使用字符为单位吗?
    当然可以,比如这样创建即可:create table test_ly(a varchar2(4 char))
    这样a列就最多能保存4个字符,而不是4个字节了。
    展开全文
  • (推荐教程:mysql视频教程)mysql各字符集下汉字和字母占字节varchar(N), 这里的N是指字符数,并不是字节数.占用的字节数与编码有关在mysql 5.1.5-alpha下测试得出如下结论latin1:1charac...
  • 可以看出不管是数字还是字符串是按照单个字符来做基本单位的,只要一个字符就一个长度,varchar(x)里的x就是你存入字符串的长度。 但是如果你用utf8存入"你好"实际会占用3*2个字节,因为mysql对utf8字符占用3字节...
  • 1、varchar(5)可以存储多少个汉字,多少个字母数字?相信有好多人应该跟我一样,对这个已经很熟悉了,根据经验我们能很快的做出决定,比如说用varchar(200)去存储url等等,但是,即使你用了很多次也很熟悉了,也有...
  • 在mysql中,如果是latin1字符...mysql各字符集下汉字和字母占字节varchar(N), 这里的N是指字符数,并不是字节数.占用的字节数与编码有关在mysql 5.1.5-alpha下测试得出如下结论latin1:1character=1byte, 1汉字=2...
  • 在mysql中,如果是latin1字符集下,一个中文汉字2个字节数;如果是utf8字符集下,一个中文汉字3个字节数;如果是gbk字符集下,一个中文汉字2个字节数。 mysql各字符集下汉字和字母占字节varchar(N), 这里...
  • (推荐教程:mysql视频教程)mysql各字符集下汉字和字母占字节varchar(N), 这里的N是指字符数,并不是字节数.占用的字节数与编码有关在mysql 5.1.5-alpha下测试得出如下结论latin1:1charac...
  • 在mysql中,一个中文汉字所占的字节数...1. 一个中文汉字占多少字节与编码有关:UTF8:一个中文汉字=3个字节GBK:一个中文汉字=2个字节utf-8, 英文字母1字节2.varchar(n)能存储几个汉字?varchar(n)表示n个字符,...
  • 或许你会说一个中文字符2个字节,这是一定的?如何计算一个字符串的字节数? 解决方案 在oracle中一个字符特别是中文几个字节是不同的。 比如我创立一个表create table test_ly(a varchar2(4),b nvarchar2(4))...
  • 在mysql中,如果是latin1字符...mysql各字符集下汉字和字母占字节varchar(N), 这里的N是指字符数,并不是字节数.占用的字节数与编码有关在mysql 5.1.5-alpha下测试得出如下结论latin1:1character=1byte, 1汉字=2...
  • ORACLE中一个字符占多少字节

    千次阅读 2014-03-13 17:02:10
    在oracle中一个字符特别是中文几个字节是不同的。  比如我创立一个表create table test_ly(a varchar2(4),b nvarchar2(4))  ...不以N开头的字段类型(比如CHAR,VARCHAR2)中,unicode字符(比如汉字)3个字节,其
  • 在mysql中,一个中文汉字所占的字节数...1. 一个中文汉字占多少字节与编码有关:UTF8:一个中文汉字=3个字节GBK:一个中文汉字=2个字节utf-8, 英文字母1字节2.varchar(n)能存储几个汉字?varchar(n)表示n个字符,...
  • 在mysql中,如果是latin1字符...mysql各字符集下汉字和字母占字节varchar(N), 这里的N是指字符数,并不是字节数.占用的字节数与编码有关在mysql 5.1.5-alpha下测试得出如下结论latin1:1character=1byte, 1汉字=2...
  • 在mysql中,一个中文汉字所占的字节数...1. 一个中文汉字占多少字节与编码有关:UTF8:一个中文汉字=3个字节GBK:一个中文汉字=2个字节utf-8, 英文字母1字节2.varchar(n)能存储几个汉字?varchar(n)表示n个字符,...
  • 在mysql中,一个中文汉字所占的字节数...1. 一个中文汉字占多少字节与编码有关:UTF8:一个中文汉字=3个字节GBK:一个中文汉字=2个字节utf-8, 英文字母1字节2.varchar(n)能存储几个汉字?varchar(n)表示n个字符,...
  • 在oracle中一个字符特别是中文几个字节是不同的。比如我创立一个表create table ...因为一个汉字在a字段中了3个字节,其他字符(比如数字或者字母或者英文标点符号)1个字节,你说b列最多能插入多少个汉字,2个...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 141
精华内容 56
关键字:

varchar占多少字节