SQL选择未查看正确的数据

SQL选择未查看正确的数据,sql,select,Sql,Select,我之前使用过MySQL,在那里我可以通过这个select查询得到正确的响应 SELECT * FROM TABLE WHERE COLUMN1 NOT IN ('Done', 'Closed') AND COLUMN2 IN ('Dude1', 'Dude2', 'Dude3') 现在我们已经将db更改为oracle,如果COLUMN1中没有值,它将被忽略。换句话说,它是空的 我已经尝试了我认为是正确的方式来提出这个问题,但它的表现并不像我所希望的那样。也许有人有一个解决方案,我可以

我之前使用过MySQL,在那里我可以通过这个select查询得到正确的响应

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')
当我运行这个查询时,我在第1列中得到了所有的null/empty值,但在第2列中我也从回复中得到了Dude6。。。我想不出还有什么别的办法

如果我删除

OR Column1 IS NULL

我不会得到神秘的Dude6作为响应,但我也不会得到column1为空/null且包含Dude1的行。

您只需要在
表达式周围加上括号:

SELECT * 
FROM TABLE 
WHERE 
  (COLUMN1 NOT IN ('Done','Closed') OR COLUMN1 IS NULL)
  AND COLUMN2 IN ('Dude1','Dude2','Dude3')