这是一个后续(实际上它是我的困境的起源)来自:Is there a concept which is the 'opposite' of SQL NULL?
如何构建Oracle' Case Expression'比较两列是否相等(输出说' 0'在实例中)和(为了我的目的)输出一个' 0' 0当两列都是NULL?
这里有一些测试数据来说明我的意思:
create table t_table (x number(1), y number(1));
insert into t_table values(0,0);
insert into t_table values(0,1);
insert into t_table values(0,NULL);
insert into t_table values(1,0);
insert into t_table values(1,1);
insert into t_table values(1,NULL);
insert into t_table values(NULL,0);
insert into t_table values(NULL,1);
insert into t_table values(NULL,NULL);
现在我将X,Y和输出0比作“等于”#39;和' 1'为了不等于'。
SELECT x, y , CASE x WHEN y THEN 0 WHEN NULL THEN 0 ELSE 1 END compare FROM t_table;
X Y COMPARE
---------- ---------- ----------
0 0 0
0 1 1
0 1
1 0 1
1 1 0
1 1
0 1
1 1
1
9 rows selected
NULL在上面显示为空格;你可以看到0,0-> 0和1,1-> 0是我想要的,但是NULL,NULL-> 1,(在我的情况下)不是我想要的。
这是因为NULL不等于NULL;所以不确定如何做一个“空”#39;代替这个?