可变长度字符串和不可变长度字符串
varchar和varchar2在数据库的定义都是可变长度的字符串,这点和char不同,char是不可变长度。注意,这里指的可变和不可变是指存储在数据库中的长度。
比如在表中定义一个字段的类型为char(20)
,插入abc
的时候,在数据库中该数据仍然占20个字节长度。如果定义为varchar(20)
或者vaarchar2(20)
,则存放只是3个字节(根据不同的字符集,也会有不同情况,后面会讲述)。
char&varchar的优劣
在存储空间上来说,varchar具有优势;
在查询效率来说,char具有优势。
varchar&varchar2
对待空串
null
varchar
是直接当做空串对待,而varchar2
则会设置为null
。存储空间
varchar
只对汉字&全角符号存两个字节,英文存一个字节;varchar2
根据不同的字符集对字符的存储设置不同,一般来说每个字符都是两个字节。- varchar2具有更好的向后兼容性,一般相对于
varchar
来说,更推荐用varchar2
。