三兄弟长得太像了,以至于一些小盆友不能准确地说出三人的区别。
首先必须指出char和varchar是人民的孩子,而varchar2是Oracle的私生子。
char是存放固定长度字符的,varchar和varchar2是存放非固定长度字符的。
三人的长度在不同数据库产品中是不同的,所以不在这里讨论了。
官方说法是char比varchar2稍微能干点。因为虾米呢?如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。
oracle保证在任何版本中varchar2向上和向下兼容,但不保证varchar。
总之,如果想新版本的Oracle兼容就不要用varchar,如果想和其他数据库兼容就不要用varchar2。
首先必须指出char和varchar是人民的孩子,而varchar2是Oracle的私生子。
char是存放固定长度字符的,varchar和varchar2是存放非固定长度字符的。
三人的长度在不同数据库产品中是不同的,所以不在这里讨论了。
官方说法是char比varchar2稍微能干点。因为虾米呢?如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。
oracle保证在任何版本中varchar2向上和向下兼容,但不保证varchar。
总之,如果想新版本的Oracle兼容就不要用varchar,如果想和其他数据库兼容就不要用varchar2。