1 Char 的长度是固定的
比如Char VarChar 定义了20的字符长度, 如果存储入 "abc" 字符串的话 Char 将占用20的长度,而Varchar按实际长度保存
当使用union查询不同表时 可以使用to_char() 函数使字段长度保持一致,避免出错
2 Char 的效率比VarChar高
3 目前VarChar 与 VarChar2是同义词
工业标准的VarChar 可以存储空字符串,但是Oracle不这样做,它自己开发了一个类型VarChar2 使其可以保存Null值
Oracle建议使用VarChar2 为了向后兼容性
怎么选择?
CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.
VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。
VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。
4 NVarChar 与 VarChar 区别
NVarChar 可变长度 支持UniCode字符集
VarChar 可变长度 不支持UniCode字符集