Mysql Oracle 字节字符

1.Mysql varchar(n)

  mysql中varchar(n) 中 n 表示 n 个字符 

 

2. Oracle varchar2(n)

  oracle中varchar2(n) 中 n 表示 n个字节   

  oracle中nvarchar2(n) 中 n 表示 n个字符

 注: 

  VARCHAR2(size type),size最大为4000,type可以是char也可以是byte,不标明type时默认是byte ; VARCHAR2(n,char) 可以存放n个字符,但是其换算后的字节数不能超4000.

  VARCHAR2最多存放4000字节的数据,最多可以可以存入4000个字母,或最多存入2000个汉字(数据库字符集编码是GBK时,varchar2最多能存放2000个汉字,数据库字符集编码是UTF-8时,那就最多只能存放1333个汉字)

3.字符

  不管汉字还是数字或者是字母都算是一个字符

 

4.字节

  一个汉字占几个字节,取决于数据库字符串编码类型:

    字符串是utf-8编码时,一个汉字三个字节,一个字母一个字节。

    字符串是gbk编码时,一个汉字两个字节,一个字母一个字节。 

  理解:

    数据库表字段为varchar(n)类型,存英文很简单,只要字母个数不大于n即可。但是对于汉字,按照同样的方法就不行了。因为对于汉字不同的字符集,在数据库占用的字节是不一样的。UTF-8字符集,一个汉字占三个字节,gbk字符集,一个汉字占两个字节,比如varchar(10)类型的字段,UTF-8的汉字,只能存3个,gbk字符集的汉字却能存5个。所以在程序中根据表字段varchar的大小,保存或更新时作出必要的校验否则后台会报错。

 

5. 查字符长度 & 字节长度

Mysql : 

  查字符长度:  char_length()   

示例: 

select  char_length('中华人民共和国Abcd');

结果:

11

 

  查字节长度:  length()

select  length('中华人民共和国Abcd');

结果:

25

 

Oracle:

  查字符长度: length() 

    select length(字段名) from tablename;

  查字节长度:length_b()

    select length_b(字段名) from tablename;

 

posted @ 2021-07-17 15:43  Avicii_2018  阅读(147)  评论(0编辑  收藏  举报