2015-08-22 34 views
0

我有表(Oracle)的数字字段如下NUMBER(10,2)不等于您在甲骨文

TEST_HOURS NUMBER(10,2) 

当我尝试以下SQL它不工作

select t.test_hours from test_hours t where 
where (t.test_hours != 1 or t.test_hours is not null) 
and t.id = 11 

当我删除这(t.test_hours != 1 or t.test_hours != null)它工作正常,但是当我包括上述行然后它不提取数据,并没有error

有人可以帮我解决这个问题。

感谢

+1

这种情况似乎毫无意义,即't.test_hours!= 1或t.test_hours!= null'。你想要得到什么? –

+1

您无法与'null'做比较。始终使用'is null'或'not null'。 –

+0

@vkp试过的不是空的,它没有帮助 – SAR

回答

1

我想你想,不

select t.test_hours 
from test_hours t 
where (t.test_hours <> 1 and t.test_hours is not null) and t.id = 11 

顺便说一句,在比较NULL是不必要的,因为它会失败。因此,一个简单的版本是:

select t.test_hours 
from test_hours t 
where t.test_hours <> 1 and t.id = 11 
2

正如叶戈尔的评论指出,您的问题列条件已经没有任何意义。此外,您应该使用IS NOT NULLIS NULL,而不是!=。当您使用!=,并且左侧的内容为空时,结果将等于NULL,而不是TRUEFALSE

即使是IS NOT NULL,你的条件是无效的,因为条件将永远是TRUEtest_hours等于1,这是因为:

test_hours != 1 FALSE 
OR 
test_hours IS NOT NULL TRUE 

因此结果将是TRUE。

您可能想要使用不同的条件。