如何在Oracle' CASE'中检查NULL表达?

时间:2018-03-16 10:34:33

标签: sql oracle null

这是一个后续(实际上它是我的困境的起源)来自: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;代替这个?

0 个答案:

没有答案