varchar是标准sql里面的;varchar2是oracle提供的独有的数据类型。
varchar对于汉字占两个字节,对于数字,英文字符是一个字节,占的内存小;varchar2一般情况下把所有字符都占两字节处理。具体要看数据库使用的字符集,比如GBK,汉字就会占两个字节,英文1个,如果是UTF-8,汉字一般占3个字节,英文还是1个。
varchar对空串不处理;
varchar2将空串当做null来处理。
varchar存放固定长度的字符串,最大长度是2000;
varchar2是存放可变长度的字符串,最大长度是4000。
如果是要更换不同的数据库,例如mysql,那么就用varchar;
如果就用oracle,那么用varchar2比较好一点。
mysql报错:1406, "Data too long for column
在MySQL中设置这个:
mysql> SET @@global.sql_mode= '';
MySQL will truncate any insert value that exceeds the specified column
width. to make this without error try Switch your MySQL mode to not
use STRICT.
意思大概是MySQL将截断超过指定列宽度的任何插入值。为了让这个不报错,
你可以尝试切换你的MySQL模式不使用严格模式。