当然有区别啊。要不干嘛要分成两种类型呢。
char是固定长度的。也就是说如果你的数据不够长度时,数据库会自动给你加上空格以填充其长度直到所定义的长度。
varchar2是可变长度的。也就是说输入多长,就存多长。
具体而言。你把password定义成char(20)。
也就是说你查询时要这样写:stmt.setString(2, "14                  ");
当然oracle有填充空格的函数。也可以用。
或者修改你的sql语句:
SELECT USERID FROM TAB_USER_INFO WHERE USERID= ? and rtrim(PASSWORD) = ?
也可以。