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;