你說的不可能,
在Oracle中如果是Char型是絕對不會自動去掉兩邊的空格的。把你Oracle PL/SQL的語句貼出來,懷疑有調用自己寫的函數去掉了空格。

解决方案 »

  1.   

    使用Oracle的时候不建议使用char类型, 一般都使用varchar2...
      

  2.   

    支持jametong(jametong)的说法如果使用VARCHAR2,你的问题就不存在了。
      

  3.   

    我在pl/sql developer里就这样写的:
    select * from test where xxx='1'
    结果就能查出来,是不是这种软件会自动去掉空格再比较啊。
      

  4.   

    我也遇到同样的问题,希望高手指点。语句如下:
         Connection con = null;
         java.sql.PreparedStatement pstmt = null;
         java.sql.ResultSet rs = null;
         con = com.mst.db.defaults.login();
         con.setAutoCommit(true);
    以下语句执行正常:
         Sql="select * from xt_yhxx where dlm='admin'" ;
         pstmt = con.prepareStatement(sql);
         rs = pstmt.executeQuery();
    但换成以下写法后返回结果为空,没有任何异常抛出:
         Sql="select * from xt_yhxx where dlm=?" ;
         pstmt = con.prepareStatement(sql);
         pstmt.setString(1, "admin");
         rs = pstmt.executeQuery();用的是Oracle 10g,Jdbc驱动就是Oracle客户端带的Class12.jar.非常困惑,望指点!进一步测试发现:由于dlm是char(20),若把变量的值用空格补足20位,查询结果就正确了。对于其他类型的字段如Varchar2等没有这个问题。若是这样,我每传一个参数,都要判断字段是否为Char类型,若是就要用空格补足Char的长度,这是是否太麻烦了,不太可行?都换成Varchar2又有效率问题,也不行。
    只能构造完成Sql,不用pstmt.set...?如何解决这个问题?等!等!