我在pl/sql developer直接写sql语句查询时,不用trim函数去除两边空格也能查出来,比如char(5),我就存一个字节的字符,而在java中,就必须去除空格才能查出来,否则查不到。
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
String url="jdbc:oracle:thin:@192.168.1.200:1521:test"; 
String user="test"; 
String password="test"; 
Connection conn= DriverManager.getConnection(url,user,password); 

PreparedStatement ps=conn.prepareStatement("select * from test where trim(' ' from xxx)=?");
ps.setString(1,"1");
System.out.println(ps.executeQuery().next());

解决方案 »

  1.   

    你DB是char(5),如果存了"123",那么实际在DB是"123  "后面有两个空格!,你在查询这个字段的时候,where条件肯定是要匹配这个"123  "才查询的出来!当你存储是"12345",刚好5位,画面上查询输入的是"12345 "有空格的话肯定要trim后才可以查询出来的!
    所以对于这种DB里面是Char的又要做查询条件的字段,最好使用varchar!
      

  2.   

    这个用char类型是项目规定的,用pl/sql developer查询会自动去掉空格再比较吗?
      

  3.   

    好像是去掉空格再比较呢!给它多个空格("12 ",有个空格)还是可以把DB里面"12"给查询出来!强大.不过再java里面还是trim掉再查询吧!