我在Table(Oracle)中有一个Number字段,如下所示
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
。
有人可以帮我解决这个问题。
由于
答案 0 :(得分:2)
正如叶戈尔的评论所指出的那样,你对该专栏的条件毫无意义。此外,您应该使用IS NOT NULL
或IS NULL
,而不是!=
。当您使用!=
时,左侧的任何内容为空,则结果将等于NULL
,而不是TRUE
或FALSE
。
即使使用IS NOT NULL
,您的条件也无效,因为TRUE
的条件始终为test_hours
等于1,因为:
test_hours != 1 FALSE
OR
test_hours IS NOT NULL TRUE
因此结果为TRUE。
你可能想要使用不同的条件。
答案 1 :(得分: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