您的位置:首页 > 数据库 > 数据库管理 > 正文

oracle中varchar2(byte)、varchar2(char)、nvarchar2()区别

更多 时间:2017-3-26 类别:数据库 浏览量:746

oracle中varchar2(byte)、varchar2(char)、nvarchar2()区别

oracle中varchar2(byte)、varchar2(char)、nvarchar2()区别

一、varchar2(byte)

就是默认的表示方式,比如我们写成:varchar2(100),就相当于varchar2(100 byte),表示最大字节数是100,该字段最多能容纳100个字节,强调空间大小。由于我们描述的是字节,因此,保存汉字等字符时,就要小心了。如果你的数据库用的是GBK编码,那么一个汉字将占用2个字节,最多能存50个汉字,如果你的数据库用的是UTF8编码,那么一个汉字将占用3个字节,最多能存33个汉字。

 

二、varchar2(char)

假设我们写成varchar2(100 char),那么无论是数字、字母、汉字,都看成一个字符,最多写100个,当然,汉字越多,占用的空间越大,同样遵循上边的数据库编码原则。例如:存入一个汉字,底层占2或3个字节,存入一个字母,占1个字节,不是1个字母或数字也占2或3个字节!

 

三、nvarchar2()

没有byte、char之分,类似于varchar2(char),只不过nvarchar2()屏蔽了数据库编码,无论是何种编码,nvarchar2()中一个汉字都占两个字节。

 

四、总结

对于GBK编码的数据库而言,安全的写法为:varchar2(2000 char)、nvarchar2(2000),对于UTF8编码的数据库而言,安全的写法为:varchar2(1333 char)、nvarchar2(2000)。

 

标签:oracle
您可能感兴趣