好吧 SELECT 1 FROM DUAL WHERE NVL(NULL,'') IS NULL有结果了 看来NVL这个转换失败了~~~ 看来只有判断 A IS NULL AND B IS NULL 了~~~
-- 你看下面的代码,'' 直接给变成 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>
使用trim函数可将空字串归并于NULL处理: select * from A where trim(B) is null;
‘’等价于null,这么写和直接写where null=null效果一样的 可以把null固定转化为一个固定值,如: where NVL(NULL,'defaultvalue') = NVL(NULL,'defaultvalue')
看来只有判断 A IS NULL AND B IS NULL 了~~~
-- 你看下面的代码,'' 直接给变成 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>
select * from A where trim(B) is null;
可以把null固定转化为一个固定值,如:
where NVL(NULL,'defaultvalue') = NVL(NULL,'defaultvalue')
我后来是改成NVL(NULL,' ') ,就是中间加个空格,就可以了。