NOT EQUAL operator!=在Oracle中没有按预期工作

时间:2014-10-09 12:15:59

标签: sql oracle oracle10g

我在数据库表中创建了一个新列:

alter table TABLE add (COLUMN NUMBER(1));

现在我想选择列值不为零的所有记录,或者是其他一些空的数字(null)

SELECT * FROM TABLE WHERE COLUMN != 0;

默认情况下,所有列都有空/空值,因为最近添加了此列,因此它应返回所有记录但不返回任何记录。

但是,如果将记录的此列的值更改为0并运行在查询下方,则可以正常工作。

SELECT * FROM TABLE WHERE COLUMN = 0;

请帮助我想选择值不是0的所有记录。

1 个答案:

答案 0 :(得分:5)

对于NULL值,您必须明确指定IS NULLIS NOT NULL

SELECT * FROM TABLE WHERE COLUMN <> 0 OR COLUMN IS NULL;

OR

SELECT * FROM TABLE WHERE NVL(COLUMN,1) <> 0

即使您使用NVL()

,优化程序也会在第一种情况下执行