to armyyd(不会游泳的猫):
但是这两句检索出的记录不一样。

解决方案 »

  1.   

    第二句里面' '包含空格
    oracle 里面 '' = null ,空格就不等于null了
    try:
    SELECT  *  FROM  TEST  
    WHERE  NVL(COLNAME,'')=trim('    ') ; 
      

  2.   

    空格数量不同当然不相等了!
    不会自动trim的。
      

  3.   

    第一句都是 一个空格,不可能是NULL。
    第二句 左边是一个空格 右边是两个空格 ,但这样就不相等了,为什么?
      

  4.   

    to  dinya2003(OK) :
      在ORACLE里面,一个空格可以等于任意个空格SELECT * FROM TEST
    WHERE ' '='          '
    这一句可以查出全部的数据
      

  5.   

    select ascii(' a  a') from dual;好象是这样,怎么回事
      

  6.   

    在ORACLE里面,一个空格可以等于任意个空格
    SELECT * FROM TEST
    WHERE ' '='          '          <-------这样是成立的.
    这一句可以查出全部的数据
    看下面的测试:
    SQL> desc testa;
    Name Type          Nullable Default Comments 
    ---- ------------- -------- ------- -------- 
    ID   NUMBER        Y                         
    NAME VARCHAR2(100) Y                         SQL> select * from testa;        ID NAME
    ---------- -----------------------------------
             2 
             2 
             1 tSQL> select length(a.name) from testa a;LENGTH(A.NAME)
    --------------
                 1
                 1
                 1SQL> select ascii(a.name) from testa a ;ASCII(A.NAME)
    -------------
               32                    <---表中有空格
               32
              116SQL> select * from testa a where a.name='  ';   <--这里是两个空格,        ID NAME
    ---------- -----------------------------SQL> 
    --说明一个空不等于两个空.
      

  7.   

    http://www.cnoug.org/viewthread.php?tid=27309&highlight=%BF%D5%D6%B5