CHAR的定义是,即使数据库中实际存储的数据长度达不到字段定义的长度,也会用空格补齐、然后存入库中。所以,如果往CHAR(2)的字段中存"0",实际放入库中的是"0 "(有空格)。如果用PL/SQL这类工具去写select,那么where子句中即使写 colname='0'也能查到。但是在ibatis中,这样写是查不到数据的,必须写colname='0 '才行。
所以,除非字段长度肯定为1,否则还是不要用CHAR的好。