Oracle 中varchar 、 varchar2 、nvarchar2 有什么区别?

如果oracle的字符编码采用GBK,那么一个汉字占两个字节,可如果使用的是UTF-8那么一个汉字占三个字节。大部分情况下使用varchar2类型,可以保证更好的兼容性。

GBK字符集下:varchar2(10)可以存5个中文,可以存10个英文。但是使用length函数获取长度实际上获取的是字符的个数,即:存5个中文的长度为5 , 10个英文的长度为10 。

nvarchar2(10)最多可一存10个中文,最多也只能存10个英文,字符长度也是字符个数,即无论是中文还是英文都是10 。

varchar2的长度最多可以设置为4000,nvarchar2的长度最多可以设置为2000,也就是说,同样都保存中文的话,两个类型最大都可以存2000个中文,如果同样都存英文的话varchar可以存4000个英文,nvarchar2只可以存2000个英文。

oracle中建表时自动把varchar转换为varchar2类型,进行创建。

varchar也是存在不定长的,和varchar2是同义词,区别在于varchar2是oracle自己开发的一个类型,用户将空字符串当成NULL存储,具有更好的兼容性。

原文地址:https://www.cnblogs.com/zbj815/p/6903326.html