还有两个单引号里啥都没有的 是 指的 空字符串么? 那他是否就是指的NULL呢~~
如果要制造一个NULL = NULL 的条件 该怎么写是可以保证条件通过的~~

解决方案 »

  1.   

    好吧 SELECT  1 FROM DUAL WHERE NVL(NULL,'') IS NULL有结果了 看来NVL这个转换失败了~~~
    看来只有判断 A IS NULL AND B IS NULL 了~~~
      

  2.   


    -- 你看下面的代码,'' 直接给变成 NULL 了SQL> create table t(id int ,name varchar(5)) ; 
    Table createdSQL> insert into t values(10,'aaaaa') ; 
    1 row insertedSQL> insert into t values(20,'bbbbb') ; 
    1 row insertedSQL> select * from t ; 
                                         ID NAME
    --------------------------------------- -----
                                         10 aaaaa
                                         20 bbbbbSQL> update t set name = '' where id = 10 ; 
    1 row updatedSQL> select * from t ; 
                                         ID NAME
    --------------------------------------- -----
                                         10 
                                         20 bbbbbSQL> select id , nvl(name,'NULL') newname from t ; 
                                         ID NEWNAME
    --------------------------------------- -------
                                         10 NULL
                                         20 bbbbbSQL> drop table t purge ; 
    Table droppedSQL> 
      

  3.   

    使用trim函数可将空字串归并于NULL处理:
    select * from A where trim(B) is null;
      

  4.   

    ‘’等价于null,这么写和直接写where null=null效果一样的
    可以把null固定转化为一个固定值,如:
    where NVL(NULL,'defaultvalue') = NVL(NULL,'defaultvalue')
      

  5.   

    Oracle中会自动将''转换成null。之前在SQL Server中常用的这种写法在Oracle中就不正确。
    我后来是改成NVL(NULL,' ') ,就是中间加个空格,就可以了。