你是不是也有这样的疑问:char、varchar 和varchar2三者之间到底有何关系?这看起来不都差不多吗?其实不然,区别有的,下面我们来细细看看。
varchar 和varchar2的区别很好理解,只需要记住这句话:varchar是标准sql中定义的,而varchar2是oracle所提供的独有的数据类型。
两种数据类型在存放数据时也有所区别。
varchar对于汉字、全角等字符占两个字节,对于数字,英文字符是一个字节,占的内存小。varchar存放固定长度的字符串,最大长度是2000,对于空串,varchar仍按空串处理。
varchar2一般情况下把所有字符都占两字节处理,具体要看字符集情况。比如GBK,汉字就会占两个字节,英文1个;如果是UTF-8,汉字一般占3个字节,英文还是1个。 但一般情况下,我们都认为是两个字节处理,因为oracle安装时候默认我们都选择GBK的编码格式。varchar2是存放可变长度的字符串,最大长度是4000。VARCHAR2把空串等同于null处理。
char是一种固定长度的类型,无论存储的数据多少都会固定长度,如果插入的长度小于定义长度,则可以用空格进行填充。所以char可能更会浪费空间。
而varchar是一种可变长度的类型,当插入的长度小于定义的长度是,插入多上就存多长。