oracle中varchar,varchar2,nvarchar,nvarchar2有什么区别?
本人新手,问题如题,如能细致解答,不胜感激!
------解决方案--------------------字符数据类型 CHAR CHAR 都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb
变长字符数据类型 VARCHAR2 VARCHAR Oracle里面最大长度为4kb,SQLServer里面最大长度为8kb
根据字符集而定的固定长度字符串 NCHAR NCHAR 前者最大长度2kb后者最大长度4kb
根据字符集而定的可变长度字符串 NVARCHAR2 NVARCHAR 二者最大长度都为4kb
------解决方案--------------------现在版本的Oracle,VARCHAR和VARCHAR2是没有区别的,VARCHAR2和ANSI VARCHAR的区别是VARCHAR2把空串等同于null处理。这也是为什么ORACLE推荐使用VARCHAR2类型的原因,因为如果新版本Oralce的VARCHAR类型完全兼容ANSI标准时,使用varchar2的脚本可以不修改。
至于一个VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,比如GBK,汉字就会占两个字节,英文1个,如果是UTF-8,汉字一般占3个字节,英文还是1个。
而NCHAR、NVARCHAR是以UNICODE-16存储,每个字符固定两个字节。