这个括号里面的数字其实和版本有关: 4.0版本及以下,varchar(3),指的是3字节,如果存放UTF8汉字时,只能存1个(每个汉字3字节). 5.0版本及以上,varchar(3),指的是3字符,无论存放的是数字、字母还是UTF8汉字,都可以存放3个. 一个是字节一个是字符,两者并不相同. 在我现在用的Oracle XE版本里面的char(3),指的是3字节,如果存放UTF8汉字时,只能存1个(每个汉字3字节). 如果是char(2),那么就只能存不到一个汉字,会报异常,说的就是你所给予的最大长度为2,但是你填了一个长度为3的字