我以前一直在使用MySQL,通过选择查询可以得到正确的响应。
SELECT *
FROM TABLE
WHERE COLUMN1 NOT IN ('Done', 'Closed')
AND COLUMN2 IN ('Dude1', 'Dude2', 'Dude3')
现在,我们已将db更改为oracle,如果COLUMN1中没有任何值,它将保留。换句话说,它为空/空。
我尝试了我认为是进行查询的正确方法,但是它的行为不如我希望的那样。也许有人有一个解决方案,我可以检索与MySQL中相同的信息。
最后一次尝试以这个查询结束
SELECT *
FROM TABLE
WHERE COLUMN1 NOT IN ('Done', 'Closed')
OR COLUMN1 IS NULL
AND COLUMN2 IN ('Dude1', 'Dude2', 'Dude3')
当我运行此查询时,我得到了所有在COLUMN1中具有空值/空值的值,但是从答复中我也得到了COLUMN2中的Dude6值,而且我不知道该怎么做。
如果我删除
OR Column1 IS NULL
我不会得到神秘的Dude6作为响应,但是我也不会得到column1为空/空且其中包含Dude1的行。
答案 0 :(得分:1)
您只需要在OR
表达式两边加上括号:
SELECT *
FROM TABLE
WHERE
(COLUMN1 NOT IN ('Done','Closed') OR COLUMN1 IS NULL)
AND COLUMN2 IN ('Dude1','Dude2','Dude3')